引言:
之前用的tensorflow 1.10版本,發現在訓練CNN的時候會自動中止,最后定位到加入卷積層就會導致訓練崩潰/中止,只用全連接層卻能正常訓練。重裝一天后無果,干脆全部升級使用tensorflow1.15:
改用WIN10+python3.7+tensorflow1.15.0+CUDA10.0(+cudnn7.6.5)+VScode
順便記錄下過程
我的筆記本配置:ryzen7 4800h+RTX2060+16G 3200 DDR4 RAM+1.5T SSD
因為我們要安裝的GPU版本的tensorflow, 只要大佬你的顯卡和我的一樣(無論是筆記本還是台式機)就可以照這個流程安裝了
安裝目錄:
1.python3.7
2.VScode(或者各位大佬熟悉的其他IDE)
3.CUDA10.0
4.CUDNN7.6
5.tensorflow_gpu 1.15.0
1.python3.7
注意tensorflow_gpu 1.15.0對應必須使用python3.7的版本,如果大佬們原來用的其他版本,要先換為py3.7的環境
從win10自帶應用市場安裝最方便,而且環境自動配好
1.電腦桌面左下角win旁邊的搜索框中輸入 microsoft store, 打開應用商店后右上角找python搜索
2.從結果中找到python3.7安裝
驗證:如果大佬第一次裝python, 可以粗略用cmd驗證一下:cmd窗口輸入python -V , 會提示python 版本 3.7.x
進一步驗證:可以打開桌面左下角搜索框輸入IDLE (python自帶的IDE)
print('hello world')+回車(注意使用英文輸入法), 沒報錯則okay
2.IDE:VScode
全稱為:Visual studio code . 這個IDE相對pycharm來說更簡潔,有巨量的第三方插件,還自帶的第三方插件安裝平台,免費而且啥計算機語言都支持。很喜歡這個IDE,這里牆裂推薦各位大佬使用。這步不是必要的,各位大佬也可以使用自己熟悉的IDE
微軟的官網下載:https://code.visualstudio.com/
安裝既能用,在左方插件欄可以找到各種你想要或者不想要的python插件(其中一個叫python的插件必須安裝不然編譯不了)
3.CUDA10.0
現在說只有基礎包,沒有補丁,下載基礎包安裝就好了。
·安裝的時候出現選擇里邊,驅動和pyhsx不是必須的(前提是如果你已經安裝了比安裝提示更新版本的驅動)
·安裝里邊VS2015相關的東西不是必須的,如果你只在python環境下做深度學習
·環境是安裝的時候自動加好的
注意下載版本是對的,如下圖:是CUDA Toolkit 10.0 ; 是CUDA Toolkit 10.0 ; 是CUDA Toolkit 10.0 ; 是CUDA Toolkit 10.0 ; 重要的事情說3遍
驗證:
桌面右下角搜索窗口輸入cmd
輸入nvcc -V
會顯示CUDA的信息
4.CUDNN 7.6.5
官方下載鏈接(需要登陸,如果大佬第一次用,最快的時選擇社交賬號->微信登陸):https://developer.nvidia.com/rdp/cudnn-archive
選擇 CUDNN v7.6.5 for CUDA 10.0 里邊的 win10版本
注意:選擇 CUDNN v7.6.5 for CUDA 10.0 ; 選擇 CUDNN v7.6.5 for CUDA 10.0 ; 選擇 CUDNN v7.6.5 for CUDA 10.0 重要的事情說三遍
下載后解壓,並把解壓后的文件全部復制到CUDA中
我們在上一步裝的是CUDA10.0 ,默認路徑如下:
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0
5.tensorflow_gpu
我們要安裝的是tensorflow 1 系列最新(現在來說)的版本1.15, 需求的CUDA10.0 和CUDNN我們已經在上面兩步裝上了
cmd窗口 , 用pip install 指令安裝, 為了加速,這里我們使用國內清華鏡像站加速:
完整的指令為:
pip install tensorflow_gpu==1.15.0 -i https://pypi.tuna.tsinghua.edu.cn/simple
所有的依賴包都會順帶安裝好:
我在安裝過程報了一次錯:
ERROR: Could not install packages due to an EnvironmentError: [Errno 2] No such file or directory: 'C:\\Users\\Denn.Dumbledore\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python37\\site-packages\\tensorflow_estimator\\python\\estimator\\canned\\linear_optimizer\\python\\utils\\__pycache__\\sharded_mutable_dense_hashtable.cpython-37.pyc'
原因是注冊列表長度限制:
找到一個網上的解答https://stackoverflow.com/questions/59388330/tensorflow-installation-problem-on-windows-10
引用h.meng的回答:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem@LongPathsEnabled to 1. You can do it by Win+R, and type regedit and you can change the setting above. Hope my answer works for you.
解除注冊列表長度限制后,重新按照第5步安裝一下
成功會提示succefully installed xxx包 xxx包 xxx包...
到這里所有的安裝已經完成了
驗證:
為了確保這次安裝的tensorflow1.15沒有出現之前1.10奇怪的訓練問題,我這里用包含一個卷積層、一個池化層、一個全連接層的簡單模型測試一下:
1.隨便在哪個你喜歡的路徑建立一個文件夾,在文件夾里邊新建一個python文件隨便命名,比如:Demo.py
2.打開VScode
3.把剛剛新建的文件夾用鼠標左鍵拖到vscode的主窗口中,輸入下面這個模型的代碼,按F5運行
注意:
·此Demo需要使用mnist數據集測測試:
(這個數據集是第一次運行自動從網絡指定路徑下載的,如果是各位大佬第一次使用這個數據集,可能會出現下載數據集超時的網絡問題,這樣子的話可以直接報錯鏈接處下載好數據,再放入keras dataset的路徑,具體方法可以百度搜索錯誤內容)
·這個DEMO是一個3層模型:
·1個卷積層6*5*5
·1個池化層2*2
·1個全連接層120
展開瀏覽代碼:

#Demo import tensorflow as tf import numpy as np #train set (x_train,y_train),(x_test,y_test)=tf.keras.datasets.mnist.load_data() #normalization x_train = tf.keras.utils.normalize(x_train) x_test = tf.keras.utils.normalize(x_test) #one more channel is needed to convolution layer x_train=x_train.reshape(-1,28,28,1) x_test=x_test.reshape(-1,28,28,1) #label:one_hot() y_train = tf.keras.utils.to_categorical(y_train, 10) y_test = tf.keras.utils.to_categorical(y_test, 10)#numpy #model instantiation model= tf.keras.models.Sequential() #convolution 6*5*5 model.add(tf.keras.layers.Conv2D(6,(5,5),activation='relu',input_shape=(28,28,1),padding="same")) #pooling 2*2 model.add(tf.keras.layers.MaxPooling2D(pool_size=(2,2))) #dropout, in case of over fitting model.add(tf.keras.layers.Dropout(0.25)) #flatten model.add(tf.keras.layers.Flatten()) #full connection 120 model.add(tf.keras.layers.Dense(120,activation='relu')) #dropout, in case of over fitting model.add(tf.keras.layers.Dropout(0.5)) #output layer : softmax model.add(tf.keras.layers.Dense(10,activation='softmax')) #set optimizer and loss function model.compile(optimizer='adam',loss=tf.keras.losses.categorical_crossentropy,metrics=['accuracy']) #train result = model.fit(x_train,y_train,epochs=2,validation_data=(x_test,y_test)) print('fitting process finished') #get loss and accuratity val_loss,val_acc=model.evaluate(x_test,y_test) print('loss:',val_loss,'acc:', val_acc) #check with the first 10 data in the test set predictions=model.predict(x_test[:10]) print(predictions) for i in range(10): predicted_number = np.argmax(predictions[i])#get the max one, which is the most probablity of the prediction print( 'prediction:',predicted_number,'groundTrue:',y_test[i])
輸出結果: