2017-02-14 45 views
1

我想了解caffe library。爲此我逐步運行feature_extraction.cpp和classification.cpp。瞭解caffe庫

在那些cpp文件中,我找到layers, prototxt file, caffemodel, net.cpp, caffe.pb.cc, caffe.pb.h文件。

我知道caffe是使用不同的圖層形成的。因此,使用了圖層文件夾內的這些圖層文件。

prototxt文件是指特定網絡的結構,如googlenet,alexanet等。不同的網絡有不同的結構。

caffemodel是訓練有素的模型,使用caffe庫來處理特定類型的網絡結構。

net.cpp,caffe.pb.cc是幹什麼的?我的意思是如何理解他們在形成這個咖啡深度學習網絡中的角色。

+0

有一個很好的caffe教程。請參閱(http://christopher5106.github.io/deep/learning/2015/09/04/Deep-learning-tutorial-on-Caffe-Technology.html) – batuman

回答

2

您可以正確理解咖啡通過將「層」疊加在一起形成「網」來實現深度學習。

'net.cpp'
每個層成爲「功能塊」和它的行爲/實施src/caffe/layers/<layer>.cppsrc/caffe/layers/<layer>.cuinclude/caffe/layers/<layer>.hpp定義。
實際將所有圖層「堆疊」成網絡的代碼可以在net.cpp中找到(主要)。

'caffe.pb.h''caffe.pb.cc'
爲了定義一個特定的深網體系結構的特定結構(例如,AlexNet,GoogLeNet,RESNET等)CAFFE使用庫。咖啡協議緩衝區的具體格式在src/caffe/proto/caffe.proto中定義。使用google protobuffer編譯器「編譯」caffe.proto以生成'caffe.pb.h''caffe.pb.cc'用於解析和處理caffe prototxtcaffemodel文件的C++代碼。

+0

認爲'caffe.pb.h','caffe.pb.cc'是像AlexNet,GoogLeNet,ResNet等深網和個體結構的通用結構,使用prototxt文件形成。該原型文件指定特定網絡的結構,如AlexNet或GoogLeNet。基於prototxt文件,使用net.cpp,使用通用的'caffe.pb.h','caffe.pb.cc'通用結構在運行時形成一個網絡。這不正確嗎? – batuman

+0

根據你所說的「caffe協議緩衝區的具體格式在src/caffe/proto/caffe.proto中定義」,像AlexNet,GoogLeNet,ResNet等所有的結構已經在'caffe.pb.h ','caffe.pb.cc'。假設我想爲不同的網絡結構形成一個新的原型文件,這是不可能的? – batuman

+0

@batuman你可以把它當作caffe.proto定義一個「語言」和caffe.pb。*翻譯這個「語言」,以便它可以在c/C++中處理。你可以在prototxt中編寫自己的網絡,而無需編寫或編譯任何C++代碼 – Shai