A. 怎麼在windows下編譯fast rcnn需要的python版本的caffe介面
一、前期環境以及准備
1、安裝python
在caffe中,python2和python3的介面都有。但frcnn中只能支持python2.7,所以千萬不要裝成python3。為了方便,不用自己去pip一大堆庫,我建議安裝anaconda2,裡面已經安裝了很多第三方的庫。
另附python,Windows的第三方庫 ,裡面很全。或許有一些庫你要去官網上下載。
2、安裝(更新)顯卡驅動和cuda
NVIDIA的顯卡驅動安裝應該不用我說了吧,到官網上下載吧。我要說明一點的是,我的1080ti在安裝顯卡驅動時,說和Windows不匹配。怎麼解決呢?更新Windows,到官網上下驅動,再安裝。成功!還有就是記得更新你的顯卡驅動,以防老的驅動不支持cuda。
CUDA安裝的話,也是傻瓜試的安裝。提醒一點的是,不要改變他的安裝路徑,默認路徑。然後去NVIDIA的官網上下載cudnn庫,這個庫的話需要去NVIDIA注冊一個賬號,然後問你用這個來完成什麼工作之類的巴拉巴拉。這個庫長什麼樣呢?下載完解壓縮,得到一個cuda的文件夾,裡面有3個文件夾
然後打開你的CUDA文件夾,默認路徑是C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0
把cudnn庫裡面的3個文件夾裡面的文件,分別加到cuda裡面對應的文件夾。
然後打開cuda需要編譯的部分,默認路徑是C:\ProgramData\NVIDIA Corporation\CUDA Samples\v8.0
因為我用的VS2015,那麼我就用打開2015的那個,然後改成release運行。
至此,顯卡計算的環境就搭建完成了。
3、cmake和git
cmake的話,我建議直接下載編譯好的能運行的文件(到官網上下載),然後解壓文件,把bin的路徑添加到Path中。
git:因為frcnn裡面有很多linux的腳本,你可以不用,但用的話會很方便的。所以我建議安裝git。同樣,傻瓜式的安裝,直接到官網上下載。
二、py-faster-rcnn
1、編譯caffe的python介面GPU版本(如果你編譯過了就不用了)
因為frcnn的編譯過程用需要用到python的caffe包,所以必須要先編譯一次caffe。如果你已經編譯過caffe的py介面就不用了。
下載微軟的Caffe,git的地址
你可以用git直接下載,或者在git的地址里下載,隨便你。
[plain] view plain
git clone
cd caffe
git checkout windows
打開caffe\scripts,然後編輯build_win.cmd文件
第7行的VERSION是你VS的版本,VS2015對應的是14,VS2013對應的應該是12;第8行改為0;第9行改為0(如果你不用GPU,那就還是1);13行的python_version是你的python版本,2.x就是2,3.x就是3;24,28行是你的python的安裝目錄,如果你是anaconda就改你的anaconda的目錄,否則就不改。
同樣69-95行同樣修改。以上2張圖是我的cmake文件配置。
進入caffe\scripts,打開cmd,直接執行build_win.cmd。注意他會自動下載需要的庫,因為伺服器呢都不在國內,所以我建議掛個VPN,不然你且等呢吧。
這樣cmake後呢,python的介面就已經編譯好了,不用再編譯一遍了。把caffe\python下的caffe的文件夾到python的第三方包的文件夾就ok。
這樣caffe的python介面就好了,你可以進cmd的python試一下import caffe。如果說,他提示少了什麼包,你直接pip這個包就好了,找不到的話,網路一下就有。但只要你跟著上面我的方法做應該不會出現什麼問題。
2、編譯py-faster-rcnn依賴庫
首先呢,我們先去編譯一下frcnn的依賴庫。Windows下,不能使用自帶的lib,把自帶的lib刪了,重新下載,這里給出git的地址。
好了,現在你的庫應該長成這樣,有setup.py和setup_cuda.py。進cmd,install這2個文件。
現在你肯定會遇到問題,提示你VC版本不對
怎麼辦呢,先set一下:輸入SET VS90COMNTOOLS=%VS140COMNTOOLS%,VS後面的數字就是你的版本。還有不要忘了把你VS的c1.exe加到path下。
編譯好frcnn的依賴庫後,應該是這個樣子的。
3、給caffe加frcnn的層
現在,我們再下載一個caffe,跟前面一樣,把build_win.cmd進行修改。然後我們就可以把frcnn的一些特有的層加到caffe里編譯了。
1)添加層和文件
打開py-faster-rcnn\caffe-fast-rcnn\src\caffe\layers文件夾,找到4個文件分別為
然後到你新的caffe的對應文件夾caffe\src\caffe\layers里。
接著我們添加頭文件,打開py-faster-rcnn\caffe-fast-rcnn\include\caffe,把fast_rcnn_layers.hpp這文件到caffe的對應文件夾下caffe\include\caffe。
2)配置2個新層
打開你的caffe\src\caffe\proto下的caffe.proto,進行編輯。
在407行左右
往原來的文件里添加新的層的配置信息
[plain] view plain
optional ROIPoolingParameter roi_pooling_param = 8266711;
optional SmoothL1LossParameter smooth_l1_loss_param = 8266712;
message ROIPoolingParameter {
// Pad, kernel size, and stride are all given as a single value for equal
// dimensions in height and width or as Y, X pairs.
optional uint32 pooled_h = 1 [default = 0]; // The pooled output height
optional uint32 pooled_w = 2 [default = 0]; // The pooled output width
// Multiplicative spatial scale factor to translate ROI coords from their
// input scale to the scale used when pooling
optional float spatial_scale = 3 [default = 1];
}
message SmoothL1LossParameter {
// SmoothL1Loss(x) =
// 0.5 * (sigma * x) ** 2 -- if x < 1.0 / sigma / sigma
// |x| - 0.5 / sigma / sigma -- otherwise
optional float sigma = 1 [default = 1];
}
3)cmake新的caffe的python介面
就是再執行一遍build_win.cmd就行。編譯好之後,把caffe根目錄下的python文件夾替換py-faster-rcnn\caffe-fast-rcnn的python文件夾。
三、demo
完成以上步驟你的py-faster-rcnn就已經編譯成功了。如果你想用demo測試一下的話可以用.\data\scripts里的腳本去下載已經訓練好的model,文件挺大的、速度挺慢的。所以給大家提供一個網路5,把caffemodel文件放在data\faster_rcnn_models,然後執行tools\demo.py就能看到結果了
B. linux下無cuda怎麼pip安裝pytorch
linux下安裝caffe(無cuda)以及python介面
caffe(8)
主要過程稍微記錄一下:
1.安裝BLAS
sudo apt-get install libatlas-base-dev
2.安裝依賴項
sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libboost-all-dev libhdf5-serial-dev protobuf-compiler liblmdb-dev
3.安裝glog
這個要FQ,我放在我的網路雲上了。
tar zxvf glog-0.3.3.tar.gz
cd glog-0.3.3
./configure
make
sudo make install
4.安裝gflags
wget https://github.com/schuhschuh/gflags/archive/master.zip
unzip master.zip
cd gflags-master
mkdir build && cd build
export CXXFLAGS="-fPIC" && cmake .. && make VERBOSE=1
make
sudo make install
這一步需要cmake,如果沒有安裝可以用 sudo apt-get install cmake 安裝。
5.安裝lmdb
git clone https://gitorious.org/mdb/mdb.git
cd mdb/libraries/liblmdb
make
sudo make install
如果沒有安裝Git,也要用 sudo apt-get install git 來安裝。
註:如果可以FQ,只用下面一句就可以安裝gflags,glog和lmdb了,省了3,4,5這三步。
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev protobuf-compiler
6.下載Caffe
git clone git://github.com/BVLC/caffe.git
7.安裝Caffe
cd caffe
cp Makefile.config.example Makefile.config
因為這里沒有gpu,所以需要設置Makefile.config文件中的CPU_ONLY:= 1,把這句的注釋去掉就可以了。
然後編譯
make all
make test
make runtest
安裝好以後我們就可以試著在mnist上跑一下lenet了。
1.首先獲取mnist數據
cd caffe
./data/mnist/get_mnist.sh
2.然後創建lenet
./examples/mnist/create_mnist.sh
注意一定要在caffe的根目錄下運行以下命令,否則會報「 build/examples/mnist/convert_mnist_data.bin: not found」的錯誤,參見這里。
3.訓練cnn
沒有gpu的話要記得把caffe/examples/mnist/lenet_solver.prototxt中的solver_mode設置成solver_mode: CPU。然後在根目錄下執行:
./examples/mnist/train_lenet.sh
准確率可以達到0.9912
因為caffe的tutorial上有很大一部分是Python的,所以後來又安裝了一下python的介面。
1.首先安裝python
2.安裝pip
sudo apt-get install python-pip python-dev build-essential
3.運行以下代碼安裝必要的依賴項:
sudo pip install -r ./python/requirements.txt
4.這里我運行了make clean以及其他編譯的caffe的命令,重新編譯了一次caffe,但我不確定是不是必須的。
5.在caffe的根目錄下運行:
make pycaffe
這里遇到了一個問題:
virtual memory exhausted: Cannot allocate memory
make: *** [python/caffe/_caffe.so] Error 1
按照這里的方法增加Linux虛擬機的內存就可以解決了。
6.把caffe/python的路徑加到python路徑中:
運行python進入python shell,然後運行下列命令:
import sys
sys.path.append("path/to/caffe/python/")
exit()
7. 這時候再次進入python shell,運行import caffe就沒有報錯了。
C. 如何在Windows下安裝配置python介面的caffe
整了一晚上加一上午。網上關於python的記錄較少,這里寫一下。
這里的環境是WIN10+cuda v7.5 +cudnn v4 + opencv + pycharm+VS2013
使用的是GPU,我的GPU是titan16G+內存32G
首先是caffe的文件以及第三方庫的編譯,這里提供一個已經編譯好的的連接,我就是從那裡下好然後編譯完畢的。
點擊打開鏈接 happynear的
然後就是如何編譯python介面。
1、首先先生成兩個python文件,在src/caffe/proto/extract_proto.bat 里生成caffe_pb2.py 這個之後有用。
2、然後打開已經給好的caffe/buildVS2013,打開裡面已經有的工程文件,正常的情況下應該是有7個工程,選中pycaffee單獨作為要編譯的項目。如圖所示:
把pycaffe作為單啟動。注意需要在release x64位下編譯。
如果沒有這個的話,就將這個文件夾里python文件夾中的項目加入即可。如果沒有python項目,就自己建一個,將python文件夾里的cpp文件加入就可以了。
3、選擇pycaffe的屬性,將配置屬性下的VC++目錄中的包含目錄和庫目錄填上你python所在的include和libs 再在C/C++的目錄下的附加包含目錄一項中添加
以我的python為例。D:/python27/Lib;D:/python/include/ 以及D:/Python27/Lib/site-packages/numpy/core/include 如果你安裝了CUDNN這里可以在預處理器那裡把USE_CUDNN加上,同時在LINKER的輸入目錄下的附加依賴庫中加入cudnn的lib文件。
3、開始編譯即可。這里要注意一定要和caffe、caffelib在一個項目里編譯,否則會報錯。
4、編譯成功後會在caffe/python/caffe下生成_caffe.pyd 是打不開的
5、配置python環境:需要幾個額外庫
Cython>=0.19.2
numpy>=1.7.1
scipy>=0.13.2
scikit-image>=0.9.3
matplotlib>=1.3.1
ipython>=3.0.0
h5py>=2.2.0
leveldb>=0.191
networkx>=1.8.1
nose>=1.3.0
pandas>=0.12.0
python-dateutil>=1.4,<2
protobuf>=2.5.0
python-gflags>=2.0
pyyaml>=3.10
Pillow>=2.3.0
six>=1.1.0
其中numpy要裝MKL版本的,不然scipy裝上了BLAS不能用
leveldb沒有windows版本的,不過我找到了可以使用的辦法。見這個博客:
點擊打開鏈接
如果有pip install 裝不上的,可以上這個網站找 wheel文件安裝就可以了
點擊打開鏈接
6、最後把目錄中python下的caffe文件夾復制到python27/Lib/site-packages就可以了。
測試的時候只需要在控制台下輸入import caffe 看能載入就知道成功了:)
D. 新手試運行了一個 caffe 的 Python 代碼,出現這個錯誤是怎麼回事
一、問題
在成功編譯caffe的源碼之後,可以在Python環境中使用caffe。
在Ubuntu環境下,打開python解釋程序,輸入import caffe時:出現以下錯誤
>>>import caffe
Traceback (most recent call last):
File "<stdin>", line 1, in <mole>
ImportError: No mole named caffe
二、解決思路
基本思路是把caffe中的python導入到解釋器中
三、解決方法
第一種方法:設置環境變數
在終中輸入:
export PYTHONPATH=~/caffe/python #caffe的路徑下面的python
則該終端起作用,關掉終端後或重新打開一終端,則失效。
放到配置文件中,可以永久有效果,命令操作如下:
A.把環境變數路徑放到 ~/.bashrc文件中
sudo echo export PYTHONPATH="~/caffe/python" >> ~/.bashrc
B.使環境變數生效
source ~/.bashrc
第二種方法:通過代碼來實現
在每個python代碼中使用以下代碼: (這個方法在寫python代碼時有用)
caffe_root = '~/caffe/python '
import sys
sys.path.insert(0, caffe_root + 'python')
import caffe
E. 人工智慧 Python深度學習庫有哪些
由於Python的易用性和可擴展性,眾多深度學習框架提供了Python介面,其中較為流行的深度學習庫如下:
第一:Caffe
Caffe是一個以表達式、速度和模塊化為核心的深度學習框架,具備清晰、可讀性高和快速的特性,在視頻、圖像處理方面應用較多。
Caffe中的網路結構與優化都以配置文件形式定義,容易上手,無須通過代碼構建網路;網路訓練速度快,能夠訓練大型數據集與State-of-the-art的模型,模塊化的組件可以方便地拓展到新的模型與學習任務上。
第二:Theano
Theano誕生於2008年,是一個高性能的符號計算及深度學習庫,被認為是深度學習庫的始祖之一,也被認為是深度學習研究和應用的重要標准之一。其核心是一個數學表達式的編譯器,專門為處理大規模神經網路訓練的計算而設計。
Theano很好地整合了Numpy,可以直接使用Numpy的Ndarray,使得API介面學習成本大為降低;其計算穩定性好,可以精準地計算輸出值很小的函數;可動態地生成C或者CUDA代碼,用來編譯成高效的機器代碼。
第三:TensorFlow
TensorFlow是相對高階的機器學習庫,其核心代碼使用C++編寫,並支持自動求導,使得用戶可以方便地設計神經網路結構,不需要親自編寫C++或CUDA代碼,也無須通過反向傳播求解梯度。由於底層使用C++語言編寫,運行效率得到了保證,並簡化線上部署的復雜度。
TensorFlow不只局限於神經網路,其數據流式圖還支持非常自由的演算法表達,也可以輕松實現深度學習以外的機器學習演算法。
第四:Keras
Keras是一個高度模塊化的神經網路庫,使用Python實現,並可以同時運行在TensorFlow和Theano上。
Keras專精於深度學習,其提供了到目前為止最方便的API,用戶僅需將高級的模塊拼在一起便可設計神經網路,大大降低了編程開銷與理解開銷。
F. 為什麼每次從python導入caffe都要編譯介面
原因
安裝python:yum install python-devel.x86_64
Makefile.config修改WITH_PYTHON_LAYER := 1 #取消注釋
安裝python依賴如果安裝 Anaconda Python可以免去下面步驟cd $CAFFE_ROOT/python
for req in $(cat requirements.txt); do pip install $req; done
編譯make cleanmake pycaffe -j32make test -j32
使Caffe的python介面永久生效vim /etc/profileprofile最後添加: export PYTHONPATH=/root/$CAFFE_ROOT/python:$PYTHONPATHsource /etc/profile
G. 新手試運行了一個 caffe 的 Python 代碼,出現這個錯誤是怎麼回事
import sys
import caffe
import numpy as np
import os
dir = os.path.join(
os.path.dirname(os.path.realpath(__file__)))
model_file = os.path.join(dir, 'bvlc_googlenet_iter_175750.caffemodel')
net_file = os.path.join(dir, 'deploy.prototxt')
mean_file = os.path.join(dir, 'AVA1_mean.npy')
#if you have no GPUs,set mode cpu
caffe.set_mode_gpu()
net = caffe.Net(net_file, model_file, caffe.TEST)
transformer = caffe.io.Transformer({'data':net.blobs['data'].data.shape})
#set mean file may improve the result,but isn't must be
#transformer.set_mean('data', np.load('../../python/caffe/imagenet/ilsvrc_2012_mean.npy').mean(1).mean(1))
transformer.set_transpose('data',(2,0,1))
transformer.set_mean('data', np.load(mean_file).mean(1).mean(1))
transformer.set_raw_scale('data',255)
transformer.set_channel_swap('data',(2,1,0))
net.blobs['data'].reshape(10,3,227,227)
img = caffe.io.load_image('C:/Users/gaoxi/Desktop/4.jpg')
net.blobs['data'].data[...] = transformer.preprocess('data',img)
out = net.forward()
out1 = out["prob"][0]
print "the score of the picture is:" + str(out1[0])
H. 13個最常用的Python深度學習庫介紹
13個最常用的Python深度學習庫介紹
如果你對深度學習和卷積神經網路感興趣,但是並不知道從哪裡開始,也不知道使用哪種庫,那麼這里就為你提供了許多幫助。
在這篇文章里,我詳細解讀了9個我最喜歡的Python深度學習庫。
這個名單並不詳盡,它只是我在計算機視覺的職業生涯中使用並在某個時間段發現特別有用的一個庫的列表。
這其中的一些庫我比別人用的多很多,尤其是Keras、mxnet和sklearn-theano。
其他的一些我是間接的使用,比如Theano和TensorFlow(庫包括Keras、deepy和Blocks等)。
另外的我只是在一些特別的任務中用過(比如nolearn和他們的Deep Belief Network implementation)。
這篇文章的目的是向你介紹這些庫。我建議你認真了解這里的每一個庫,然後在某個具體工作情境中你就可以確定一個最適用的庫。
我想再次重申,這份名單並不詳盡。此外,由於我是計算機視覺研究人員並長期活躍在這個領域,對卷積神經網路(細胞神經網路)方面的庫會關注更多。
我把這個深度學習庫的列表分為三個部分。
第一部分是比較流行的庫,你可能已經很熟悉了。對於這些庫,我提供了一個通俗的、高層次的概述。然後,針對每個庫我詳細解說了我的喜歡之處和不喜歡之處,並列舉了一些適當的應用案例。
第二部分進入到我個人最喜歡的深度學習庫,也是我日常工作中使用最多的,包括:Keras、mxnet和sklearn-theano等。
最後,我對第一部分中不經常使用的庫做了一個「福利」板塊,你或許還會從中發現有用的或者是在第二板塊中我還沒有嘗試過但看起來很有趣的庫。
接下來就讓我們繼續探索。
針對初學者:
Caffe
提到「深度學習庫」就不可能不說到Caffe。事實上,自從你打開這個頁面學習深度學習庫,我就敢打保票你肯定聽說Caffe。
那麼,究竟Caffe是什麼呢?
Caffe是由Berkeley Vision and Learning Center(BVLC)建立的深度學習框架。它是模塊化的,速度極快。而且被應用於學術界和產業界的start-of-the-art應用程序中。
事實上,如果你去翻閱最新的深度學習出版物(也提供源代碼),你就很可能會在它們相關的GitHub庫中找到Caffe模型。
雖然Caffe本身並不是一個Python庫,但它提供綁定到Python上的編程語言。我們通常在新領域開拓網路的時候使用這些綁定。
我把Caffe放在這個列表的原因是它幾乎被應用在各個方面。你可以在一個空白文檔里定義你的模型架構和解決方案,建立一個JSON文件類型的.prototxt配置文件。Caffe二進制文件提取這些.prototxt文件並培訓你的網路。Caffe完成培訓之後,你可以把你的網路和經過分類的新圖像通過Caffe二進制文件,更好的就直接通過Python或MATLAB的API。
雖然我很喜歡Caffe的性能(它每天可以在K40 GPU上處理60萬張圖片),但相比之下我更喜歡Keras和mxnet。
主要的原因是,在.prototxt文件內部構建架構可能會變得相當乏味和無聊。更重要的是, Caffe不能用編程方式調整超參數!由於這兩個原因,在基於Python的API中我傾向於對允許我實現終端到終端聯播網的庫傾斜(包括交叉驗證和調整超參數)。
Theano
在最開始我想說Theano是美麗的。如果沒有Theano,我們根本不會達到現有的深度學習庫的數量(特別是在Python)。同樣的,如果沒有numpy,我們就不會有SciPy、scikit-learn和 scikit-image,,同樣可以說是關於Theano和深度學習更高級別的抽象。
非常核心的是,Theano是一個Python庫,用來定義、優化和評估涉及多維數組的數學表達式。 Theano通過與numpy的緊密集成,透明地使用GPU來完成這些工作。
雖然可以利用Theano建立深度學習網路,但我傾向於認為Theano是神經網路的基石,同樣的numpy是作為科學計算的基石。事實上,大多數我在文章中提到的庫都是圍繞著Theano,使自己變得更加便利。
不要誤會我的意思,我愛Theano,我只是不喜歡用Theano編寫代碼。
在Theano建設卷積神經網路就像只用本機Python中的numpy寫一個定製的支持向量機(SVM),當然這個對比並不是很完美。
你可以做到嗎?
當然可以。
它值得花費您的時間和精力嗎?
嗯,也許吧。這取決於你是否想擺脫低級別或你的應用是否需要。
就個人而言,我寧願使用像Keras這樣的庫,它把Theano包裝成更有人性化的API,同樣的方式,scikit-learn使機器學習演算法工作變得更加容易。
TensorFlow
與Theano類似,TensorFlow是使用數據流圖進行數值計算的開源庫(這是所有神經網路固有的特徵)。最初由谷歌的機器智能研究機構內的Google Brain Team研究人員開發,此後庫一直開源,並提供給公眾。
相比於Theano ,TensorFlow的主要優點是分布式計算,特別是在多GPU的環境中(雖然這是Theano正在攻克的項目)。
除了用TensorFlow而不是Theano替換Keras後端,對於TensorFlow庫我並沒有太多的經驗。然而在接下來的幾個月里,我希望這有所改變。
Lasagne
Lasagne是Theano中用於構建和訓練網路的輕量級庫。這里的關鍵詞是輕量級的,也就意味著它不是一個像Keras一樣圍繞著Theano的重包裝的庫。雖然這會導致你的代碼更加繁瑣,但它會把你從各種限制中解脫出來,同時還可以讓您根據Theano進行模塊化的構建。
簡而言之:Lasagne的功能是Theano的低級編程和Keras的高級抽象之間的一個折中。
我最喜歡的:
Keras
如果我必須選出一個最喜歡的深度學習Python庫,我將很難在Keras和mxnet中做出抉擇——但最後,我想我會選Keras。
說真的,Keras的好處我說都說不完。
Keras是一個最低限度的、模塊化的神經網路庫,可以使用Theano或TensorFlow作為後端。Keras最主要的用戶體驗是,從構思到產生結果將會是一個非常迅速的過程。
在Keras中架構網路設計是十分輕松自然的。它包括一些state-of-the-art中針對優化(Adam,RMSProp)、標准化(BatchNorm)和激活層(PReLU,ELU,LeakyReLU)最新的演算法。
Keras也非常注重卷積神經網路,這也是我十分需要的。無論它是有意還是無意的,我覺得從計算機視覺的角度來看這是非常有價值的。
更重要的是,你既可以輕松地構建基於序列的網路(其中輸入線性流經網路)又可以創建基於圖形的網路(輸入可以「跳過」某些層直接和後面對接)。這使得創建像GoogLeNet和SqueezeNet這樣復雜的網路結構變得容易得多。
我認為Keras唯一的問題是它不支持多GPU環境中並行地訓練網路。這可能會也可能不會成為你的大忌。
如果我想盡快地訓練網路,那麼我可能會使用mxnet。但是如果我需要調整超參數,我就會用Keras設置四個獨立的實驗(分別在我的Titan X GPUs上運行)並評估結果。
mxnet
我第二喜歡的深度學習Python庫無疑就是mxnet(重點也是訓練圖像分類網路)。雖然在mxnet中站立一個網路可能需要較多的代碼,但它會提供給你驚人數量的語言綁定(C ++、Python、R、JavaScript等)。
Mxnet庫真正出色的是分布式計算,它支持在多個CPU / GPU機訓練你的網路,甚至可以在AWS、Azure以及YARN集群。
它確實需要更多的代碼來設立一個實驗並在mxnet上運行(與Keras相比),但如果你需要跨多個GPU或系統分配訓練,我推薦mxnet。
sklearn-theano
有時候你並不需要終端到終端的培養一個卷積神經網路。相反,你需要把CNN看作一個特徵提取器。當你沒有足夠的數據來從頭培養一個完整的CNN時它就會變得特別有用。僅僅需要把你的輸入圖像放入流行的預先訓練架構,如OverFeat、AlexNet、VGGNet或GoogLeNet,然後從FC層提取特徵(或任何您要使用的層)。
總之,這就是sklearn-theano的功能所在。你不能用它從頭到尾的訓練一個模型,但它的神奇之處就是可以把網路作為特徵提取器。當需要評估一個特定的問題是否適合使用深度學習來解決時,我傾向於使用這個庫作為我的第一手判斷。
nolearn
我在PyImageSearch博客上用過幾次nolearn,主要是在我的MacBook Pro上進行一些初步的GPU實驗和在Amazon EC2 GPU實例中進行深度學習。
Keras把 Theano和TensorFlow包裝成了更具人性化的API,而nolearn也為Lasagne做了相同的事。此外,nolearn中所有的代碼都是與scikit-learn兼容的,這對我來說絕對是個超級的福利。
我個人不使用nolearn做卷積神經網路(CNNs),但你當然也可以用(我更喜歡用Keras和mxnet來做CNNs)。我主要用nolearn來製作Deep Belief Networks (DBNs)。
DIGITS
DIGITS並不是一個真正的深度學習庫(雖然它是用Python寫的)。DIGITS(深度學習GPU培訓系統)實際上是用於培訓Caffe深度學習模式的web應用程序(雖然我認為你可以破解源代碼然後使用Caffe以外其他的後端進行工作,但這聽起來就像一場噩夢)。
如果你曾經用過Caffe,那麼你就會知道通過它的終端來定義.prototxt文件、生成圖像數據、運行網路並監管你的網路訓練是相當繁瑣的。 DIGITS旨在通過讓你在瀏覽器中執行這些任務來解決這個問題。
此外,DIGITS的用戶界面非常出色,它可以為你提供有價值的統計數據和圖表作為你的模型訓練。另外,你可以通過各種輸入輕松地可視化網路中的激活層。最後,如果您想測試一個特定的圖像,您可以把圖片上傳到你的DIGITS伺服器或進入圖片的URL,然後你的Caffe模型將會自動分類圖像並把結果顯示在瀏覽器中。干凈利落!
Blocks
說實話,雖然我一直想嘗試,但截至目前我的確從來沒用過Blocks(這也是我把它包括在這個列表裡的原因)。就像許多個在這個列表中的其他庫一樣,Blocks建立在Theano之上,呈現出一個用戶友好型的API。
deepy
如果讓你猜deepy是圍繞哪個庫建立的,你會猜什麼?
沒錯,就是Theano。
我記得在前一段時間用過deepy(做了初始提交),但在接下里的大概6-8個月我都沒有碰它了。我打算在接下來的博客文章里再嘗試一下。
pylearn2
雖然我從沒有主動地使用pylearn2,但由於歷史原因,我覺得很有必要把它包括在這個列表裡。 Pylearn2不僅僅是一般的機器學習庫(地位類似於scikit-learn),也包含了深度學習演算法的實現。
對於pylearn2我最大的擔憂就是(在撰寫本文時),它沒有一個活躍的開發者。正因為如此,相比於像Keras和mxnet這樣的有積極維護的庫,推薦pylearn2我還有些猶豫。
Deeplearning4j
這本應是一個基於Python的列表,但我想我會把Deeplearning4j包括在這里,主要是出於對他們所做事跡的無比崇敬——Deeplearning4j為JVM建立了一個開源的、分布式的深度學習庫。
如果您在企業工作,你可能會有一個塞滿了用過的Hadoop和MapRece伺服器的儲存器。也許這些你還在用,也許早就不用了。
你怎樣才能把這些相同的伺服器應用到深度學習里?
事實證明是可以的——你只需要Deeplearning4j。
總計
以上就是本文關於13個最常用的Python深度學習庫介紹的全部內容