2017-02-14 89 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