我试图了解caffe的基本知识,特别是在python中的使用。在
我的理解是模型定义(比如一个给定的神经网络架构)必须包含在'.prototxt'
文件中。在
当您使用'.prototxt'
在数据上训练模型时,您将权重/模型参数保存到'.caffemodel'
文件中
此外,用于培训的'.prototxt'
文件(包括学习率和正则化参数)与用于测试/部署的文件(不包括它们)之间存在差异。在
问题:
'.prototxt'
是培训的基础,而且
'.caffemodel'
是训练(权重)的结果,使用
'.prototxt'
关于训练数据?在'.prototxt'
用于培训,一个用于
在测试中,只有很小的差异(学习率
和正规化因素有关的训练),但是神经网络
架构(假设你使用神经网络)是一样的?在很抱歉这些基本问题和一些非常不正确的假设,我正在做一些在线调查,以上几行总结了我迄今为止的理解。在
让我们看看BVLC/caffe提供的一个示例:^{} 。
您会注意到,实际上有3
'.prototxt'
文件:由
train_val.prototxt
和deploy.prototxt
表示的网络体系结构应该基本相似。两者之间几乎没有什么主要区别:输入数据:在培训期间,通常使用一组预定义的输入进行培训/验证。因此,
train_val
通常包含显式输入层,例如"HDF5Data"
层或"Data"
层。另一方面,deploy
通常不知道它将得到什么输入,它只包含一个语句:它声明了网络需要什么输入以及它的维度是什么。} 层:
或者,可以放置^{
deploy
期间,这些信息显然不可用。在deploy
期间,没有丢失和反向传播。在在caffe中,您提供一个
train_val.prototxt
来描述网络、train/val数据集和丢失。此外,您还提供了一个solver.prototxt
来描述用于训练的元参数。训练过程的输出是一个.caffemodel
二进制文件,包含网络的训练参数。一旦训练完网络,就可以使用
deploy.prototxt
和.caffemodel
参数来预测新的和未看到的输入的输出。在是的,但是.prototxt文件有不同的类型 例如
https://github.com/BVLC/caffe/blob/master/examples/mnist/lenet_train_test.prototxt
这是为训练和测试网络准备的
对于命令行训练,ypu可以使用一个解算器文件,例如.prototxt文件
https://github.com/BVLC/caffe/blob/master/examples/mnist/lenet_solver.prototxt
相关问题 更多 >
编程相关推荐