Win7 +Cuda9.0+cudnn7.0.5 tensorflow-gpu1.5.0 安裝實戰

http://www.javashuo.com/article/p-mlivmoir-kg.htmlhtml

https://blog.csdn.net/tomato_sir/article/details/79973237html5

https://blog.csdn.net/qq_36556893/article/details/79433298  -->這裏面有個連接,支持cuda9.1的tensorflowpython

 

裝GPU版本的tensorflow,搞了1天多,終於搞清前因後果。記錄於此但願讓你少走彎路。  網絡

個人第一塊顯卡是 NVIDIA Quadro 2000dom

 支持cuda5.0.1 ,驅動過低,tensorflow gpu版本須要至少cuda8.0。 你用驅動精靈升級你的顯卡驅動。ide

後來發現,不須要用驅動精靈先升級顯卡驅動的。你就直接裝cuda,所有安裝,別少選,他裏面有驅動,會幫你升級。但問題是,老顯卡你不知道最高支持多少,好比顯卡最高支持cuda8.0,你裝個cuda9.0,那不行的。測試

因此,若是你是第一次裝,你仍是老老實實先用驅動精靈升級顯卡驅動,這樣你就知道顯卡最高支持多少的cuda了。優化

 

我以前不知道上面的規律,因此我看到5.0.1後,覺得這顯卡不能用,換了一個更高級的顯卡,用驅動精靈裝完驅動後發現顯卡是cuda9.2,後來發現後續裝cudnn 支持不了9.2(why?你看這篇文章的第5點,列表中cuda9.2沒有支持win7的包),後來從新裝cuda9.0 後,這裏的驅動也降到了9.0.  網站

上面的經驗也折騰了很久。。ui

下圖是我第一塊顯卡,後來被證明這塊顯卡裝好最新驅動後支持cuda8.0. 下面的記錄都是我用第二塊顯卡的過程。這個圖的主要目的是讓你知道哪裏去找顯卡的cuda版本。你運行裏面直接搜索'nvidia控制面板就行'

                                                                                  圖一

 

 

1.爲了要cpu和gpu都支持,須要新建一個新的虛擬環境

(後來我把虛擬環境刪除了,不要cpu版本的了,直接gpu版本,下面2.3 兩步能夠省略)

conda create --name tensorflow-gpu python=3.6

 紅色字爲新環境名字,隨意~

2.切換到新的環境 

activate tensorflow-gpu

 

3.查看當前環境, 能夠看到已經切換了。  * 好就是當前的環境

conda info --envs

 

 

 

 

4.安裝cuda

先裝 VS2013 (VS2015 VS2017 均可以行,vs2012是否能夠,請網友試驗成功後告訴我哈,我裝cuda時,裏面顯示能夠裝vs2012的擴展,因此我認爲都是能夠的)

裝完vs,裝cuda

CUDA下載地址:https://developer.nvidia.com/cuda-downloads 

個人cuda在這裏:https://developer.nvidia.com/cuda-90-download-archive?target_os=Windows&target_arch=x86_64&target_version=7&target_type=exelocal

 

5.  裝cudnn 

務必到下面網站看下,支持的cuda版本,和操做系統的版本。我是win7,cuda9.0 用的是紅框的。

https://developer.nvidia.com/rdp/cudnn-archive   (這網站要註冊,並且網站比較慢,須要FQ,好麻煩的~~)

 

 

 

按照其餘帖子,把cudnn直接複製到相應目錄。

打開你下載路徑能夠看到cuda文件夾下有三個子文件,分別爲bin、include和lib

將如下三個路徑添加到環境變量中(不知道環境變量在哪的朋友自行百度~)

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\bin;

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\include;

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\lib\x64;

 

(舒適提示:記得路徑之間加分號  ;)

 

6. 安裝 tensorflow-gpu 1.5.0 

 

若是第一次使用anaconda,pip可能比較老了,能夠升級一下pip先:

python -m pip install --upgrade pip

安裝以前記得先把cpu版本的tensorflow卸載,還有tensorboard也卸載。

pip uninstall tensorflow

pip uninstall tensorboard (這步大概不須要,你本身看看吧)

pip install tensorflow-gpu==1.5.0       指定一個版本,  老版本不支持 cuda9.0  只支持cuda8.0,新的版本聽說有bug,反正用1.5.0聽說不出問題。

 

備用,若是你pip安裝出錯或者網絡慢,能夠先下載whl文件:

tensorflow 的 whl文件下載

https://pypi.org/project/tensorflow-gpu/1.5.0/#files

 

7.測試下 

我作測試時,全部都裝好後運行下面兩句,import沒問題,可是tf.__version__顯示沒有這個模塊。

通過反覆重裝也沒用,最後,我把anaconda更新了一下。就行了【輕描淡寫的一句話,實際上我折騰了大半天。。。。最後不行了纔想到去更新anaconda】

import tensorflow as tf
tf.__version__

 

測試是否能用gpu,應該返回true 

tf.test.is_gpu_available( cuda_only=False, min_cuda_compute_capability=None )

   

8. 更新anaconda 

如下兩個方法都OK。大概須要半小時左右(看網速多快了)。我用第一個方法的。

 方法1:

 

方法2:

conda install  -c anaconda html5lib  

  

用了方法一後,我對比了一下,發現裏面的包並無更新:

 

 

上面2種方法仍是有點區別的,第二種方法會更新全部的庫,第一種方法並無更新別的庫,只是更新了conda

相似於下面,這句話的意思是更新conda,這個指令的做用是更新conda 的package庫

第一種方法相似於:conda update conda
第2種方法相似於:conda update --all

  

  

conda的文檔

https://conda.io/docs/user-guide/getting-started.html  

 

9. 通過上面第8步更新後,再回到第六步,安裝tensorflow-gpu 就能夠安裝成功了。

一段demo

#寫在第一段單元格
import tensorflow as tf hello = tf.constant('Hello, TensorFlow!') sess = tf.Session() print(sess.run(hello)) a = tf.constant(10) b = tf.constant(32) print(sess.run(a + b)) #寫在第二個cell
import tensorflow as tf import numpy import matplotlib.pyplot as plt rng = numpy.random learning_rate = 0.01 training_epochs = 1000 display_step = 50
#數據集x
train_X = numpy.asarray([3.3,4.4,5.5,7.997,5.654,.71,6.93,4.168,9.779,6.182,7.59,2.167, 7.042,10.791,5.313,9.27,3.1]) #數據集y
train_Y = numpy.asarray([1.7,2.76,3.366,2.596,2.53,1.221,1.694,1.573,3.465,1.65,2.09, 2.827,3.19,2.904,2.42,2.94,1.3]) n_samples = train_X.shape[0] X = tf.placeholder("float") Y = tf.placeholder("float") W = tf.Variable(rng.randn(), name="weight") b = tf.Variable(rng.randn(), name="bias") pred = tf.add(tf.multiply(X, W), b) cost = tf.reduce_sum(tf.pow(pred-Y, 2))/(2*n_samples) optimizer = tf.train.GradientDescentOptimizer(learning_rate).minimize(cost) init = tf.initialize_all_variables() with tf.Session() as sess: sess.run(init) # 訓練數據
    for epoch in range(training_epochs): for (x, y) in zip(train_X, train_Y): sess.run(optimizer, feed_dict={X: x, Y: y}) print("優化完成!") training_cost = sess.run(cost, feed_dict={X: train_X, Y: train_Y}) print("Training cost=", training_cost, "W=", sess.run(W), "b=", sess.run(b), '\n') #可視化顯示
    plt.plot(train_X, train_Y, 'ro', label='Original data') plt.plot(train_X, sess.run(W) * train_X + sess.run(b), label='Fitted line') plt.legend() plt.show()

 運行後顯示:

 10  雖然能運行上面的,可是發現導入tensorflow時會報錯

是由於numpy版本和h5py的不兼容,升級 pip install --upgrade h5py==2.8.0rc1

 

參考:

https://blog.csdn.net/u014561933/article/details/80156091

相關文章
相關標籤/搜索