Python 深度学习-一些关于caffe的天真问题
我试图理解caffe的基础知识,特别是与python一起使用 我的理解是模型定义(比如给定的神经网络架构)必须包含在Python 深度学习-一些关于caffe的天真问题,python,neural-network,deep-learning,caffe,pycaffe,Python,Neural Network,Deep Learning,Caffe,Pycaffe,我试图理解caffe的基础知识,特别是与python一起使用 我的理解是模型定义(比如给定的神经网络架构)必须包含在'.prototxt'文件中 当您使用'.prototxt'对模型进行数据训练时,将权重/模型参数保存到'.caffemodel'文件中 此外,用于培训的'.prototxt'文件(包括学习率和正则化参数)与用于测试/部署的文件(不包括它们)之间存在差异 问题: '.prototxt'是培训的基础,这是否正确 '.caffemodel'是使用 培训数据上的“.prototxt” 有
'.prototxt'
文件中
当您使用'.prototxt'
对模型进行数据训练时,将权重/模型参数保存到'.caffemodel'
文件中
此外,用于培训的'.prototxt'
文件(包括学习率和正则化参数)与用于测试/部署的文件(不包括它们)之间存在差异
问题:
'.prototxt'
是培训的基础,这是否正确
'.caffemodel'
是使用
培训数据上的“.prototxt”'.prototxt'
和一个用于
测试中,只有轻微的差异(学习率
和正则化因子),但
架构(假设你使用神经网络)是一样的吗对于这些基本问题和一些可能非常不正确的假设,我深表歉意。我正在进行一些在线研究,上面几行总结了我迄今为止的理解。让我们看看BVLC/caffe提供的一个示例:。
您会注意到实际上有3
'.prototxt'
文件:
- :此文件描述培训阶段的网络体系结构李>
- :此文件描述测试时的网络体系结构(“部署”)李>
- :此文件非常小,包含用于培训的“元参数”。比如,这个,
train_val.prototxt
和deploy.prototxt
表示的网络体系结构应该大致相似。两者之间没有什么主要区别:
- 输入数据:在培训期间,通常使用预定义的输入集进行培训/验证。因此,
通常包含一个显式输入层,例如,train\u val
层或“HDF5Data”
层。另一方面,“Data”
通常事先不知道将获得什么输入,它只包含一条语句:deploy
它声明了网络需要什么输入以及它的维度应该是什么。input: "data" input_shape { dim: 10 dim: 3 dim: 227 dim: 227 }
或者,可以放置一个层: - 输入标签:在培训期间,我们向网络提供“地面真相”预期输出,在
部署期间,这些信息显然不可用李>
- 损耗层:在培训期间,必须定义损耗层。该层告诉解算器在每次迭代时应调整参数的方向。这一损失将网络当前的预测与预期的“地面真相”相比较。损失的梯度会传播回网络的其余部分,这就是学习过程的驱动力。在
没有丢失和反向传播部署期间
- 损耗层:在培训期间,必须定义损耗层。该层告诉解算器在每次迭代时应调整参数的方向。这一损失将网络当前的预测与预期的“地面真相”相比较。损失的梯度会传播回网络的其余部分,这就是学习过程的驱动力。在
train_val.prototxt
来描述网络、train/val数据集和损失。此外,还提供了一个描述培训元参数的solver.prototxt
。训练过程的输出是一个包含网络训练参数的.caffemodel
二进制文件。网络训练完成后,您可以使用
deploy.prototxt
和.caffemodel
参数来预测新的和看不见的输入的输出。是的,但是.prototxt文件的类型不同
比如说
这是针对培训和测试网络的
对于命令行训练,ypu可以使用解算器文件,例如.prototxt文件
请限制您在每篇文章中只回答一个问题。这太宽了。嗨,马特,我明白了。我删除了问题3,这是最广泛的一个。我留下了两个问题,但它们是高度相关的是/否问题-希望这是可以的。对于您关于使用python接口“解决”的其他问题,您可能会觉得相关。非常感谢Shai,非常好的提示。非常感谢Shai。这是一个令人敬畏的回应。不可能要求更好的解释。
layer {
name: "input"
type: "Input"
top: "data"
input_param { shape { dim: 10 dim: 3 dim: 227 dim: 227 } }
}