0

我使用caffe库进行深度学习。理解咖啡库

我对图书馆的工作方式有些困惑。

我明白了什么是

的API在net.cpp, net.h是用户的应用程序接口。

net.cpp, net.h使用来自caffe.pb.cc, caffe.pb.h的API。

我搞不​​清是

(1)什么是caffe/src/caffe/layerscaffe.pb.cc, caffe.pb.h层之间的关系?

(2)此类NetParameter inside caffe.pb.h做了什么,它的用途是什么? (3)caffe.pb这是什么?

回答

1

Caffe使用google协议缓冲区(“pb”)来定义网络结构。创建/下载caffe模型时,您会看到一个'train.prototxt''deploy.prototxt'文件。这些文件是根据caffe的协议缓冲区语法编写的(在caffe.proto中定义)。
然后将此协议缓冲区编译到自动生成的caffe.pb.cccaffe.pb.h文件中定义的C++界面中。

NetParameter结构是在caffe.proto中定义的数据类型,负责表示“净”。可以在src/caffe/layers/*.cpp文件中找到各层的功能实现。

+0

是NetParameter表示一个净值。但为什么它在功能上被当作本地使用。例如,在构造函数Net :: Net(const string&param_file,Phase phase, const int level,const vector * stages, const Net * root_net)和其他一些函数中。为什么代表网络没有必要是全球性的,因为网络是全球性的,就像我们使用googlenet.prototxt那样,网络是全球性的。 – batuman

+1

现在我明白了。 NetParameter不需要是全局的。因为它从网络读取数据,并将网络中的任何设置分配给Net类中的layers_,blobs_和所有其他矢量。设置后,该NetParameter是没有必要的。 – batuman