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