Neural network 理解caffe图书馆

Neural network 理解caffe图书馆,neural-network,protocol-buffers,deep-learning,caffe,Neural Network,Protocol Buffers,Deep Learning,Caffe,我正在努力理解这个问题。为此,我一步一步地运行feature_extraction.cpp和classification.cpp 在那些cpp文件中,我找到了层、prototxt文件、caffemodel、net.cpp、caffe.pb.cc、caffe.pb.h文件 我知道caffe是由不同的层组成的。因此,将使用图层文件夹中的图层文件 prototxt文件用于特定网络的结构,如googlenet、alexnet等。不同的网络具有不同的结构 CAFEMODEL是使用caffe库针对特定类型的

我正在努力理解这个问题。为此,我一步一步地运行feature_extraction.cpp和classification.cpp

在那些cpp文件中,我找到了
层、prototxt文件、caffemodel、net.cpp、caffe.pb.cc、caffe.pb.h
文件

我知道caffe是由不同的层组成的。因此,将使用图层文件夹中的图层文件

prototxt文件用于特定网络的结构,如googlenet、alexnet等。不同的网络具有不同的结构

CAFEMODEL是使用caffe库针对特定类型的网络结构进行训练的模型


那些net.cpp、caffe.pb.cc是做什么的?我的意思是如何理解他们在形成caffe深度学习网络中的作用。

您正确理解caffe通过将“层”堆叠在另一层之上以形成一个“网络”来实现深度学习

'net.cpp'

每个层作为一个“功能块”工作,其行为/实现在
src/caffe/layers/.cpp
src/caffe/layers/.cu
include/caffe/layers/.hpp
中定义 在
net.cpp
中可以找到(大部分)将所有层“堆叠”到一个网络中的代码

'caffe.pb.h'
'caffe.pb.cc'


为了定义特定深网体系结构(如AlexNet、GoogLeNet、ResNet等)的特定结构,caffe使用库。caffe协议缓冲区的具体格式在中定义。使用C++编译程序生成代码< >代码> 'Cuff.P.H′//>和<代码> 'Cope.Pb.cc '/Cuff>代码,用于解析和处理CAFE代码>原代码> <代码>和<代码> CaleMod > <代码>文件.

我认为“Case.Pb.h”,'CaC.P.C.C]是深网的一般结构和AlexNet的个体结构,GoogLeNet、ResNet等是使用prototxt文件形成的。该prototxt文件指定特定网络(如AlexNet或GoogLeNet)的结构。基于prototxt文件,使用net.cpp,在运行时使用那些通用的“caffe.pb.h”、“caffe.pb.cc”通用结构形成网络。不是吗?根据您所说的“caffe协议缓冲区的具体格式在src/caffe/proto/caffe.proto中定义”,所有这些结构,如AlexNet、GoogLeNet、ResNet等,都已固定在“caffe.pb.h”、“caffe.pb.cc”中。比如说,如果我想为不同的网络结构形成一个新的prototxt文件,这是不可能的?@batuman你可以把它想象成caffe.proto定义了一种“语言”和caffe.pb。*翻译这种“语言”,以便在c/c++中处理。您可以在原机中编写自己的网络,而不需要编写或编译任何C++代码谢谢。现在我明白了。是否有层/cpp文件的文档。特别是对于那些来自非cpp背景的人。如何理解自定义实现。比如:caffe有一个很好的教程。请看()