作者:周縱葦
微博:@MrGiovanni
郵箱:zongweiz@asu.edu
Please cite this paper if you found it useful. Thanks!
Wang H, Zhou Z, Li Y, et al. Comparison of machine learning methods for classifying mediastinal lymph node metastasis of non-small cell lung cancer from 18F-FDG PET/CT images[J]. 2017, 7.
---
論文引用——3.2 測(cè)試平臺(tái)
項(xiàng)目代碼是在Windows 7上運(yùn)行的囤热,主要用到的Matlab R2013a和Python劝堪,其中Matlab用于patch的分割和預(yù)處理,卷積神經(jīng)網(wǎng)絡(luò)搭建用到了根植于Python和Theano的深度學(xué)習(xí)框架Keras。Keras是基于Theano的一個(gè)深度學(xué)習(xí)框架最爬,它的設(shè)計(jì)參考了Torch,用Python語(yǔ)言編寫(xiě)淹冰,是一個(gè)高度模塊化的神經(jīng)網(wǎng)絡(luò)庫(kù)叮喳,支持GPU和CPU被芳,用起來(lái)特別簡(jiǎn)單,適合快速開(kāi)發(fā)馍悟。
直接上干貨筐钟,拒絕走彎路
下載一個(gè)Anaconda Python Distribution,網(wǎng)址: https://www.continuum.io/downloads#_windows
安裝完成后,該有的基礎(chǔ)包就都有了李破,安裝完anaconda宠哄,就相當(dāng)于安裝了Python、IPython嗤攻、集成開(kāi)發(fā)環(huán)境Spyder毛嫉、一些包等等。然后打開(kāi)Anaconda Prompt妇菱,cd到?.py?文件的路徑承粤,輸入“python **.py”暴区,注意:這兒和cmd的命令相比多了一個(gè)“python”。要是你不加python辛臊,會(huì)提示錯(cuò)誤:拒絕訪(fǎng)問(wèn)仙粱。
在打開(kāi)的Anaconda Prompt的命令行中輸入“pip install keras"伐割,稍等片刻,keras直接就安裝完了刃唤,好方便隔心!
再接著輸命令“conda install mingw libpython”,多等片刻尚胞,MinGW也就安裝完了硬霍。
最近我安裝的時(shí)候感覺(jué)特別慢,有時(shí)候根本就沒(méi)有進(jìn)度笼裳,我懷疑是被墻了唯卖。
接下來(lái)呢侍咱,開(kāi)始裝theano~三步走
1. 下載theano的zip文件耐床,解壓到你電腦的.../Anaconda/Lib/site-packages/theano目錄下,注意:原來(lái)這個(gè)site-packages里面本身就有一個(gè)叫做theano的東西楔脯,把它刪了撩轰!替換成壓縮包里的文件,并重命名為theano
2. 添加環(huán)境變量: ? ?path: C:/Anaconda/MinGW/bin; C:/Anaconda/MinGW/x86_64-w64-mingw32/lib;
3. 新建環(huán)境變量: ?PYTHONPATH: C:/Anaconda/Lib/site-packages/theano;
好了昧廷,理論上theano也安裝成功了堪嫂,測(cè)試一下看~在A(yíng)naconda Prompt的命令行中輸入“python”,回車(chē)木柬,然后輸入“import theano”皆串,回車(chē)。如果你看到“>>>”三個(gè)箭頭眉枕,沒(méi)有別的亂七八糟的東西了恶复,就說(shuō)明:你!安速挑!裝谤牡!成!功姥宝!啦翅萤!
至此,你已經(jīng)可以運(yùn)行keras的神經(jīng)網(wǎng)絡(luò)程序了腊满,但是有一個(gè)小瑕疵:會(huì)警告你cl.exe找不到套么。你可以不理它培己,我提供解決方案是
去電腦的C盤(pán)目錄下檢索“cl.exe”,會(huì)出來(lái)幾個(gè)cl.exe
靠譜的路徑名是:C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin\x86_amd64
當(dāng)然啰胚泌,前提是你電腦里面裝了Visual Studio (VS)省咨,如果沒(méi)裝的話(huà)也沒(méi)關(guān)系,裝一下就好了啰诸迟。提供VS各個(gè)版本的免費(fèi)下載地址:Visual Studio 各版本下載
下載完茸炒,把搜索到的cl.exe的路徑添加到系統(tǒng)路徑Path里頭,這個(gè)警告就會(huì)消失啦~
(可選)加速庫(kù)CuDNN
從官網(wǎng)下載需要注冊(cè)賬號(hào)申請(qǐng)阵苇,兩三天批準(zhǔn)壁公。網(wǎng)盤(pán)搜索一般也能找到最新版。
Windows目前就是cudnn-7.0-win-x64-v5.0-prod.zip绅项。
下載解壓出來(lái)是名為cuda的文件夾紊册,里面有bin、include快耿、lib囊陡,將三個(gè)文件夾復(fù)制到安裝CUDA的地方覆蓋對(duì)應(yīng)文件夾,默認(rèn)文件夾在:
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA
添加環(huán)境變量:? ? path:?C:\Anaconda2;C:\Anaconda2\Scripts;
Cool掀亥,整個(gè)64位的python·keras就配置完成了撞反,也就是說(shuō)可以運(yùn)行你的深度學(xué)習(xí)代碼啰:)
至于說(shuō)找keras的源代碼,去這兒里隨便挑一個(gè)搪花,一般就用mnist_cnn.py遏片。
如果你根據(jù)“干貨”成功地配完了keras,那么就別往下看了撮竿,要是沒(méi)成功吮便,下面就是更加詳細(xì)的步驟、遇到的錯(cuò)誤和對(duì)應(yīng)解決方案幢踏。供你參考:)
安裝python
我選擇的版本是2.7.11版本髓需,注意了!不要裝Python3.5.1房蝉,不然后續(xù)的深度學(xué)習(xí)配置各種坑僚匆。在Python的官方主頁(yè)下載Python安裝包。下載地址是:https://www.python.org/downloads/
選擇64位粗卜!選擇64位!選擇64位纳击!說(shuō)三遍续扔,不然到時(shí)候數(shù)據(jù)量大了就MemoryError了攻臀!
當(dāng)然嘍纱昧,我當(dāng)初沒(méi)有裝64位是有原因的刨啸,因?yàn)樵谶\(yùn)行mnist手寫(xiě)字體識(shí)別的神經(jīng)網(wǎng)絡(luò)時(shí)出現(xiàn)這個(gè)問(wèn)題,那時(shí)我為了圖簡(jiǎn)單识脆,就干脆裝了32位的python设联,哎,現(xiàn)在還得填坑W莆妗@肜!
在下載完成之后宫蛆,一直點(diǎn)擊下一步就OK了。注意:安裝在系統(tǒng)盤(pán)5拿汀耀盗!
在安裝完成之后,我們需要手動(dòng)添加環(huán)境變量:鼠標(biāo)右鍵我的電腦 ?-> 屬性 -> 點(diǎn)擊高級(jí)系統(tǒng)設(shè)置 -> 點(diǎn)擊環(huán)境變量 -> 點(diǎn)擊PATH -> 在最后面加上我們的Python安裝路徑 -> 點(diǎn)擊確定卦尊。反正就是Python27這個(gè)文件夾的系統(tǒng)目錄
我的路徑是:C:\\Python27
怎么看你有沒(méi)有裝成功咧叛拷,打開(kāi)cmd命令行界面,輸入python岂却,返回了版本號(hào)忿薇,就可以啦
python安裝成功!
安裝pip
pip對(duì)于python就相當(dāng)于apple store對(duì)于iPhone淌友,是各個(gè)包的下載中心煌恢,剛剛下完的python相當(dāng)于一個(gè)裸機(jī),需要在pip里面下載一些深度學(xué)習(xí)需要的包~所以現(xiàn)在我們先下載安裝pip震庭。
同樣需要在Python的官網(wǎng)上去下載瑰抵,下載地址是:https://pypi.python.org/pypi/pip#downloads
下載完器联,解壓到python27文件路徑下
打開(kāi)二汛,里面有一個(gè)setup.py,復(fù)制當(dāng)前路徑拨拓,在cmd下cd到這兒
到了C:\\Python27\\pip-8.1.1后肴颊,輸入
python setup.py install
--------我是分割線(xiàn)---------
當(dāng)然最近還出現(xiàn)了一個(gè)新的錯(cuò)誤婿着,就是這個(gè)
要是你沒(méi)遇到最好,直接跳到下一個(gè)分割線(xiàn),遇到的話(huà)解決方法是:
直接用瀏覽器訪(fǎng)問(wèn)地址:https://bootstrap.pypa.io/get-pip.py竟宋,直接打開(kāi)了get-pip.py的源代碼提完,可以直接把內(nèi)容拷貝出來(lái),然后在本地創(chuàng)建get-pip.py丘侠。就是新建一個(gè)txt文檔徒欣,粘貼內(nèi)容,重命名成get-pip.py蜗字,注意:文件類(lèi)型改成了.py
運(yùn)行cmd打肝,cd到get-pip.py所在目錄(我是C:\\Python27),運(yùn)行代碼:
--------我是分割線(xiàn)---------
按照之前介紹的添加環(huán)境變量的方法粗梭,我們?cè)赑ATH最后添加:
C:\\Python27\\Scripts;
然后看看到底pip安裝成功了沒(méi),在cmd里面輸入pip担神,會(huì)出現(xiàn)這個(gè)
安裝深度學(xué)習(xí)框架keras
上面都是基本的準(zhǔn)備東西,要是你已經(jīng)跪在前面了妄讯,那孩锡。。只能亥贸。躬窜。自求多福:) 啰,我現(xiàn)在要開(kāi)始正式講keras怎么用了炕置!
注意一點(diǎn):python以及keras的所有代碼都在cmd界面運(yùn)行的~
我們可以先看看現(xiàn)在python有些什么包荣挨,在cmd下輸入:
pip list
我們需要先安裝scipy和numpy這兩個(gè)包默垄,注意:這兩的比較奇葩,用pip安裝會(huì)給你出來(lái)一堆錯(cuò)誤甚纲,建議用網(wǎng)上的scipy.exe和numpy.exe無(wú)腦裝口锭,省事兒。你可能在網(wǎng)上會(huì)看到whl等格式文件和所謂的去“官網(wǎng)”安裝介杆,我只能忠告一下:不要入坑鹃操。。春哨。:)
numpy.exe 64位下載地址:http://vdisk.weibo.com/s/sTuT3rm3Mg2jC
scipy.exe 64位下載地址:http://download.csdn.net/download/feixueyinjiayue/9027923
也許scipy.exe需要注冊(cè)賬號(hào)荆隘,就提供一下我的這兩個(gè)exe的百度云鏈接:numpy.exe、scipy.exe
下載完這兩個(gè)exe,都是無(wú)腦安裝的,一直摁next即可吗冤。然后在cmd下輸入“pip list”查看是否安裝完柬甥,如果成功了是這個(gè)界面
接下來(lái)我介紹pip這個(gè)appstore怎么用。也就是一句話(huà)的事兒拓轻,在cmd中輸入:pip install **(你想下載的包)虽缕,回車(chē)就好了熊昌,確保有網(wǎng)仪壮,就可以自動(dòng)開(kāi)始下載安裝啰,超級(jí)簡(jiǎn)單的胳徽。舉例:
現(xiàn)在安裝完scipy和numpy积锅,我就可以下載安裝keras了,就這樣
這樣keras就成功安裝完了养盗。缚陷。。
調(diào)試keras
首先往核,你得有一個(gè)卷積神經(jīng)網(wǎng)絡(luò)的keras樣例代碼箫爷,一般來(lái)說(shuō)比較推薦minst的,我可以提供代碼和數(shù)據(jù)聂儒,我想這個(gè)網(wǎng)站要成為下一步學(xué)習(xí)的墊腳石了虎锚,因?yàn)橐_(kāi)始小小地改代碼了。
有了代碼和數(shù)據(jù)窜护,小改一下數(shù)據(jù)的路徑,然后就開(kāi)始解決一堆報(bào)錯(cuò)的問(wèn)題了嘿嘿嘿:
錯(cuò)誤1:sorry, unimplemented: 64-bit mode not compiled in
原因:32位的gcc不能編譯64位程序非春。
解決方法:下載并安裝64位gcc到E:\\MinGW\\bin柱徙,需要修改環(huán)境變量。(親測(cè)不可行奇昙,呵呵)
錯(cuò)誤2:'g++' is not recognized as an internal or external command.
錯(cuò)誤3:TypeError: max_pool_2d() got an unexpected keyword argument 'mode'
這個(gè)就是keras內(nèi)部的函數(shù)定義的時(shí)候形參多了一個(gè)“mode”护侮,找到這個(gè)函數(shù),把mode='average_exc_pad'這項(xiàng)刪了即可储耐;找函數(shù)的方法如下圖羊初,函數(shù)在theano_backend.py這個(gè)文件內(nèi)(C:\\Python27\\Lib\\site-packages\\keras\\backend\\theano_backend.py),用搜索找到pool_out = downsample.max_pool_2d這個(gè)位置弧岳,把該刪的刪掉凳忙!
--------我是分割線(xiàn)---------
如果實(shí)在遇到的坑太多,就換個(gè)方法禽炬,要是正常的話(huà)直接跳到下一個(gè)分割線(xiàn)就好了(額)
Anaconda Python Distribution安裝
下載一個(gè)Anaconda Python Distribution涧卵,網(wǎng)址:https://www.continuum.io/downloads#_windows
安裝完成后腹尖,該有的基礎(chǔ)包就都有了柳恐,安裝完anaconda,就相當(dāng)于安裝了Python、IPython乐设、集成開(kāi)發(fā)環(huán)境Spyder讼庇、一些包等等。然后打開(kāi)Anaconda Prompt近尚,cd到py文件的路徑蠕啄,輸入“python **.py”,注意:這兒和cmd的命令相比多了一個(gè)python戈锻。要是你不加python歼跟,會(huì)拒絕訪(fǎng)問(wèn)。
然后在打開(kāi)的Anaconda Prompt命令行中輸入“pip install keras",這樣keras直接就安裝完了拒迅,好方便骚秦!
--------我是分割線(xiàn)---------
好了,我們繼續(xù)填坑璧微。
錯(cuò)誤4:g++ not detected !
前提是我已經(jīng)將E:\\Program Files (x86)\\CodeBlocks\\MinGW\\bin和lib, include加入系統(tǒng)路徑了作箍。呵呵
解決辦法:在[Anaconda2] 中輸入命令“conda install mingw libpython”
錯(cuò)誤5:Exception: Compilation failed (return status=-1073741701)
-fPIC問(wèn)題的解決:看不懂开瞭,媽的
我的解決方法:首先不要用codeblocks的g++.exe懒震,用Anacoda2中自帶的MinGW的g++.exe,把這個(gè)路徑加入環(huán)境變量
地址是C:\\Users\\Administrator\\Anaconda2\\MinGW\\x86_64-w64-mingw32\\bin嗤详,然后呢个扰,錯(cuò)誤提示變成了這樣
對(duì)于這種錯(cuò)誤4,錯(cuò)誤5葱色,我要提供一個(gè)終極解決方案啦5菡!2哉(不能忍了)
64位WIN7上成功安裝theano,并運(yùn)行了g++, GPU
我們已經(jīng)安裝完Anaconda了办龄,然后現(xiàn)在要重!新淋昭!安俐填!裝!theano翔忽!
1. 下載theano的zip文件英融,解壓到.../Anaconda/Lib/site-packages/theano(文件里面有個(gè)theano的文件夾盏檐,拿出來(lái)放在E:/Anaconda/Lib/site-packages里面)目錄下。
2. 添加環(huán)境變量: ? ?path: E:/Anaconda/MinGW/bin;E:/Anaconda/MinGW/x86_64-w64-mingw32/lib;
(32bit ?E:/Anaconda/MinGW/i686-w64-mingw32/lib;)
新建環(huán)境變量: ?PYTHONPATH: E:/Anaconda/Lib/site-packages/theano;
至此,我所有的問(wèn)題都順利的解決了痕鳍,你呢硫豆?是不是也可以成功地訓(xùn)練你的神經(jīng)網(wǎng)絡(luò)了呢?
寫(xiě)個(gè)彩蛋
對(duì)于64位的Anaconda抄邀,如果python要讀入MATLAB的數(shù)據(jù)文件.mat,好像不能再用32位的那句代碼了昼榛,因?yàn)闀?huì)出現(xiàn)“Python.exe已停止工作”的錯(cuò)誤境肾。
解決方法是換一個(gè)讀入方法唄~
這個(gè)函數(shù)有很多優(yōu)點(diǎn)哦:
1. 可以讀入MATLAB Version 7.3 or later (save -v7.3) Variables can exceed 2GB on 64-bit systems ! 這個(gè)版本的mat文件能儲(chǔ)存的數(shù)據(jù)量超級(jí)大。
2. 輸入的矩陣就是mat內(nèi)部存的形式胆屿,舉例:mat文件里面有一個(gè)A(3*2)的變量奥喻,sio.loadmat()讀入的是一個(gè)一維的(1*6)的數(shù)組,然后還得reshape()一下變成(3*2)的非迹;h5py.File()直接就讀入一個(gè)(3*2)的數(shù)組环鲤。
剛剛測(cè)試了一下花了我72小時(shí)的64·python·keras,真的可以利用的內(nèi)存爆大誒T魇蕖@淅搿!
祝一切順利~