深度學習小筆記00-深度學習看的書推薦和其他小問題還有一些博客鏈接

寫在前面的話:一些零零碎碎的小事情。
做CV,逃不掉要接觸機器學習,我現在才入手其實很晚了,但是相信我能很快進入這個領域的,之前一直沉迷opencv,出到opencv4.0,已經正式融合TF了。這是一個非常有趣的事。

新手從0開始踩過的坑

01推薦書:

深度學習與計算機視覺
這本書前面寫的很好,但是後面例子都是基於MXNet和Caffe的,且不說Caffe2已經融合進了Pytorch(記得是),那個配環境各種依賴庫真實勸退。所以我只看了前面一半。
Tensorflow實戰Google深度學習框架第二版這本書已經出來第二版,還有幾本和它長的像的叫《深度學習原理Tensorflow實踐》,這本書寫的不如上面列的這個,感覺後者像是蹭熱度。鄭澤宇這本內容不錯。
魏秀參的書
這本魏秀參的書講了很多精華內容,但是不適合從0開始,需要有些數學功底和對深度學習或神經網絡有些瞭解。而且不是一本基於某框架的書,只有理論。

02配環境

ubuntu16.04,cuda,cudnn,py
一定要注意TF和他們之間的版本對應關係!還有顯卡支持計算能力到幾,這個在覈彈廠官網能查到。我筆記本870顯卡開普勒架構3.0的計算能在這裏插入圖片描力不能用TF1.12.0難受的亞皮。只能用1.10.0試試。
配置環境推薦anaconda虛擬環境,不要在實體Terminal裏面裝,因爲後面會不斷出事,虛擬環境克隆調整比較方便。

配環境踩的坑:

Internal: cudaGetDevice() failed. Status: CUDA driver version is insufficien
很奇怪我用的CUDA和CUDNN如下:
查看CUDA和CUDNN版本講道理是支持TF1.10.0的,結果在虛擬環境下面裝了還是不行。找不到CUDA設備。所以在環境配置的GUI界面選了別的CUDATOOLKIT版本試試依舊不行。解決辦法:刪除全部TF的包。我用的:pip uninstall tensor*不能用替代字符,我是一個個刪的。然後:pip install tensorflow-gpu==1.10.0,這樣裝完就能用了。
爲什麼這個:
anaconda_ENV這個不好用還不知道是什麼原因。但是pip是一直好用的。

Spyder不能輸入中文,envs文件夾沒有虛擬環境文件夾

首先確定自己裝了中文輸入法,我用的搜狗,fcitx的方式。
然後參照下面這篇文章
不能輸入中文
我做完後,base可用,自定義虛擬環境仍舊不可用。但是,刪除虛擬環境時候顯示:
路徑
看到,虛擬環境的路徑是在用戶文件夾的.conda的隱藏文件夾的,所以要把上面那篇文章提到的.so文件複製到對應的文件夾中。不熟悉純命令行的同學可以先用cd進入上面的隱藏文件夾然後用 ”nautilus .“ 命令打開圖像界面。或者在資源管理器按住ctrl+h也可以顯示出隱藏文件。
然後:

找到文件/usr/lib/x86_64-linux-gnu/qt5/plugins/platforminputcontexts/libfcitxplatforminputcontextplugin.so
在anaconda3下搜索platforminputcontexts目錄,結果會出現好幾個platforminputcontexts
正確的應該是anaconda3/lib/python3.6/site-packages/PyQt5/Qt/plugins/platforminputcontexts 這個目錄,向裏面複製上面的文件,重啓spyder即可。

在資源有限情況下訓練神經網絡(Anaconda IDE)

(其實這是很有限的方法,並不如直接加硬件來的實際)
最近測試PSMNet網絡,在SceneFlow數據集上,作者使用4路Titan Xp12G 顯存,12的BatchSize,單卡一次3組數據。我只有1080Ti11GB,單卡3組Out of Mem。使用nvidia-smi查看後,發現batchsize是2時候能用,佔用顯存約7G,講道理單卡是具備batchsize3的能力的,圖形界面消耗約400-500M顯存,所以決定純命令行,

開啓黑窗口:
ctrl alt F1
執行:
sudo service lightdm stop
停止圖形界面;
執行
nvidia-smi
看到顯存佔用0MB
執行:
conda info --env
查看當前有哪些虛擬環境;
執行:
conda activate ***
激活對應環境,bash前面會有標註

資源使用率查看

 開啓
 ctrl alt F2
 watch -n1 nvidia-smi
 每隔1秒刷新一次信息,顯示功耗、計算使用率和顯存佔用,
 下面幾行會詳細列出每個command的佔用率
 開別的窗口,top命令查看,相當於Win的任務管理器,
 值得注意的是,內存佔用率低,但是buff/cache佔用率特別高。
 buff是準備寫入磁盤的數據,cache是即將從磁盤讀取的數據,我這裏佔用達到25GB,
 畢竟要餵飽顯卡,磁盤的速度還是不夠啊。這也給選配深度學習主機提了醒:
 內存至少比顯存大,大一些的內存可以提供更大的cache(至少對於PyTorch)

注意事項:顯示器熄屏,xset: unable to open display

關閉圖形界面後,機器運行期間我關閉了顯示器。
第二天,當我打開顯示器,沒有信號輸入,觀察機器運行狀態仍然是滿功率運行。使用putty遠程登錄,機器一切照常,就是沒有顯示器輸出,插顯卡DP口插主板HDMI口都沒用。
putty正常
依舊保持着6小時一個epoch
解決辦法:就算顯示器沒輸出,又不是不能用,ssh登錄也可還行,啓動圖形界面:sudo service lighdm start ,我可沒這個勇氣,顯存會爆。等跑完15個epoch(官方給的例子是10個epoch,我想多試試看看區別),我就putty啓動圖形界面試試(肯定要啓動新一輪train,保證自己顯存緊張情況下啓動圖形界面)。等更。
更新:訓練過程中顯存幾乎佔滿情況下,啓動圖形界面居然沒有問題,就是有點卡,而且上面的那個顯示器無信號問題也沒了。(開圖形界面情況下開啓訓練卻可能爆顯存)

寫得好的文章:ResNet, AlexNet, VGG, Inception: 理解各種各樣的CNN架構;

ResNet, AlexNet, VGG, Inception: 理解各種各樣的CNN架構
英文帖原文1  英文帖原文2

特徵圖尺寸計算方式

附一下截圖的鏈接特徵圖尺寸計算

Looney等人建議,數據集中65%的用於訓練,25%的用於測試,10%用於驗證

名詞解釋

  • LRN:LRN(Local Response Normalization)
    作用:將不同卷積核RELU後的feature歸一化,平滑處理,能增加泛化能力。
    原因:生物方面,玄學
    Alexnet提出
    公式:

lrn
CSDN鏈接原文
後來實驗發現,LRN層似乎沒什麼用-_-

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章