用gpu訓(xùn)練好的神經(jīng)網(wǎng)絡(luò),用tensorflow-cpu跑出錯(cuò)的原因及解決方案
訓(xùn)練的時(shí)候當(dāng)然用gpu,速度快呀。
我想用cpu版的tensorflow跑一下,結(jié)果報(bào)錯(cuò),這個(gè)錯(cuò)誤不太容易看懂。
大概意思是沒找到一些節(jié)點(diǎn)。
后來發(fā)現(xiàn)原因,用gpu和cpu保存的pb模型不太一樣,但是checkpoints文件是通用的。
使用tensorflow-cpu再把checkpoints文件重新轉(zhuǎn)換一下pb文件就可以了。
完美解決!
補(bǔ)充:tensflow-gpu版的無數(shù)坑坑坑!(tf坑大總結(jié))
自己的小本本,之前預(yù)裝有的pycharm+win10+anaconda3+python3的環(huán)境
2019/3/24重新安裝發(fā)現(xiàn):目前CUDA10.1安裝不了tensorflow1.13,把CUDA改為10.0即可(記得對(duì)應(yīng)的cudann呀)
如果剛?cè)肟?,建議先用tensorflw學(xué)會(huì)先跑幾個(gè)demo,等什么時(shí)候接受不了cpu這烏龜般的速度之時(shí),就要開始嘗試讓gpu來跑了。
cpu跑tensorflow只需要在anaconda3下載。
安裝cpu跑的tensorflow:
我的小本本目前已經(jīng)是gpu版本,cpu版本下紅圈里那個(gè)版本就好了!
安裝好了后直接在python命令中輸入
import tensorflow as tf
如果不報(bào)錯(cuò)說明調(diào)用成功。
查看目前tensorflow調(diào)用的是cpu還是gpu運(yùn)行:
import tensorflow as tf import numpy as np a = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[2, 3], name='a') b = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[3, 2], name='b') c = tf.matmul(a, b) sess = tf.Session(config=tf.ConfigProto(log_device_placement=True)) print(sess.run(c))
然后把這段代碼粘貼到編譯器中運(yùn)行,
看一下運(yùn)行的結(jié)果中,調(diào)用運(yùn)行的是什么
看給出的是gpu還是cpu就能判斷目前運(yùn)行的是哪一個(gè)了
安裝gpu版本的tensorflow:
首先第一步要確定你的顯卡是否為N卡,
然后上https://developer.nvidia.com/cuda-gpus去看看你的顯卡是否被NVDIA允許跑機(jī)器學(xué)習(xí)
對(duì)于CUDA與cudann的安裝:
需要到nvdia下載CUDA與cudann,這里最重要的是注意CUDA與cudann與tensorflow三者的搭配,
注意版本的搭配?。?!
注意版本的搭配!??!
注意版本的搭配?。?!
tensorflow在1.5版本以后才支持9.0以上的CUDA,所以如果CUDA版本過高,會(huì)造成找不到文件的錯(cuò)誤。
在官網(wǎng)也可以看到CUDA搭配的cudann
在安裝完了cudann時(shí),需要把其三個(gè)文件復(fù)制到CUDA的目錄下,并且添加3個(gè)新的path:
3個(gè)path,
當(dāng)使用gpu版的tf時(shí),就不再需要安裝原來版本的tf,卸載了就好,安裝tf-gpu版,
判斷自己是否有安裝tf包,對(duì)于pycharm用戶,可以在setting那看看是否安裝了tf-gpu
我使用的環(huán)境為:tf1.2+CUDA8.0+cudann5.1
當(dāng)全部正確安裝時(shí)
import tensorflow as tf 仍然出錯(cuò)
cudnn64_6.dll問題
關(guān)于導(dǎo)入TensorFlow找不到cudnn64_6.dll,其實(shí)下載的的是cudnn64_7.dll(版本不符合),把其修改過來就行了。
目錄是在:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\bin下
對(duì)于不斷嘗試扔失敗運(yùn)行GPU版本,可以把tf先刪除了重新下
import tensorflow as tf print(tf.__version__)
查詢tensorflow安裝路徑為:
print(tf.__path__)
成功用GPU運(yùn)行但運(yùn)行自己的代碼仍然報(bào)錯(cuò):
如果報(bào)錯(cuò)原因是這個(gè)
ResourceExhaustedError (see above for traceback): OOM when allocating tensor with shape[10000,28,28,32]
最后關(guān)于這個(gè)報(bào)錯(cuò)是因?yàn)镚PU的顯存不夠,此時(shí)你可以看看你的代碼,是訓(xùn)練集加載過多還是測(cè)試集加載過多,將它一次只加載一部分即可。
對(duì)于訓(xùn)練集banch_xs,banch_ys = mnist.train.next_batch(1000)
改為
banch_xs,banch_ys = mnist.train.next_batch(100)
即可,
而測(cè)試集呢print(compute_accuracy(mnist.test.images[:5000], mnist.test.labels[:5000]))
改為
print(compute_accuracy(mnist.test.images, mnist.test.labels))
即可
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。
- 運(yùn)行tensorflow python程序,限制對(duì)GPU和CPU的占用操作
- 基于Tensorflow使用CPU而不用GPU問題的解決
- 在tensorflow中設(shè)置使用某一塊GPU、多GPU、CPU的操作
- tensorflow指定CPU與GPU運(yùn)算的方法實(shí)現(xiàn)
- 卸載tensorflow-cpu重裝tensorflow-gpu操作
- 使用Tensorflow-GPU禁用GPU設(shè)置(CPU與GPU速度對(duì)比)
- 詳解tf.device()指定tensorflow運(yùn)行的GPU或CPU設(shè)備實(shí)現(xiàn)
- Tensorflow中使用cpu和gpu有什么區(qū)別
- tensorflow之如何使用GPU而不是CPU問題
- TensorFlow安裝CPU版本和GPU版本的實(shí)現(xiàn)步驟
相關(guān)文章
Python+appium框架原生代碼實(shí)現(xiàn)App自動(dòng)化測(cè)試詳解
這篇文章主要介紹了Python+appium框架原生代碼實(shí)現(xiàn)App自動(dòng)化測(cè)試詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-03-03Python內(nèi)置函數(shù)ord()的實(shí)現(xiàn)示例
ord()函數(shù)是用于返回字符的Unicode碼點(diǎn),適用于處理文本和國際化應(yīng)用,它只能處理單個(gè)字符,超過一字符或非字符串類型會(huì)引發(fā)TypeError,示例代碼展示了如何使用ord()進(jìn)行字符轉(zhuǎn)換和比較2024-09-09python GUI庫圖形界面開發(fā)之PyQt5信號(hào)與槽機(jī)制、自定義信號(hào)基礎(chǔ)介紹
這篇文章主要介紹了python GUI庫圖形界面開發(fā)之PyQt5信號(hào)與槽機(jī)制基礎(chǔ)介紹,需要的朋友可以參考下2020-02-02CNN卷積函數(shù)Conv2D()各參數(shù)的含義及用法解讀
這篇文章主要介紹了CNN卷積函數(shù)Conv2D()各參數(shù)的含義及用法解讀,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-02-02pytorch實(shí)現(xiàn)梯度下降和反向傳播圖文詳細(xì)講解
這篇文章主要介紹了pytorch實(shí)現(xiàn)梯度下降和反向傳播,反向傳播的目的是計(jì)算成本函數(shù)C對(duì)網(wǎng)絡(luò)中任意w或b的偏導(dǎo)數(shù)。一旦我們有了這些偏導(dǎo)數(shù),我們將通過一些常數(shù)α的乘積和該數(shù)量相對(duì)于成本函數(shù)的偏導(dǎo)數(shù)來更新網(wǎng)絡(luò)中的權(quán)重和偏差2023-04-04基于python實(shí)現(xiàn)簡(jiǎn)單網(wǎng)頁服務(wù)器代碼實(shí)例
這篇文章主要介紹了基于python實(shí)現(xiàn)簡(jiǎn)單網(wǎng)頁服務(wù)器代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-09-09