深度学习 - 关于咖啡的一些天真的问题

时间:2016-01-24 00:16:24

标签: python neural-network deep-learning caffe pycaffe

我试图了解caffe的基础知识,特别是与python一起使用。

我的理解是模型定义(比如给定的神经网络架构)必须包含在'.prototxt'文件中。

当您使用'.prototxt'训练数据模型时,您将权重/模型参数保存到'.caffemodel'文件

此外,用于培训的'.prototxt'文件(包括学习率和正则化参数)与用于测试/部署的文件(不包括它们)之间存在差异。

问题:

  1. '.prototxt'是培训的基础是正确的 '.caffemodel'是训练(权重)的结果,使用 '.prototxt'关于培训数据?
  2. 是否正确,'.prototxt'用于培训,一个用于培训 测试,并且只有轻微的差异(学习率 和训练中的正规化因素),但那个nn 架构(假设你使用神经网络)是一样的吗?
  3. 对于这些基本问题以及可能是一些非常不正确的假设表示道歉,我正在做一些在线研究,上面的几行总结了我迄今为止的理解。

2 个答案:

答案 0 :(得分:12)

让我们来看看BVLC / caffe提供的一个例子:bvlc_reference_caffenet 您会注意到实际上有 3 n file included from main.cpp:1: /usr/include/c++/v1/functional:1454:41: error: no type named 'type' in 'std::__1::enable_if<false, void>'; 'enable_if' cannot be used to disable this declaration __callable<_Fp>::value && ^~~~~~~~~~~~~~~~~~~~~~~~~ main.cpp:10:15: note: in instantiation of member function 'std::__1::function<int (int)>::function' requested here using base::function; ^ main.cpp:14:25: note: while substituting deduced template arguments into function template 'my_function' [with _Fp = nullptr_t] my_function<int(int)> f = nullptr; ^ 1 error generated. 个文件:

'.prototxt'train_val.prototxt代表的网络架构应该大致相似。这两者之间几乎没有什么区别:

  • 输入数据:在训练期间,通常使用一组预定义的输入进行训练/验证。因此,deploy.prototxt通常包含显式输入图层,例如train_val图层或"HDF5Data"图层。另一方面,"Data"通常不知道它将获得什么输入,它只包含一个声明:

    deploy

    声明网络所期望的输入以及其尺寸应该是什么 或者,One可以放置"Input"图层:

    input: "data"
    input_shape {
      dim: 10
      dim: 3
      dim: 227
      dim: 227
    }
    
  • 输入标签:在培训期间,我们向网络提供“基本事实”预期输出,这些信息在layer { name: "input" type: "Input" top: "data" input_param { shape { dim: 10 dim: 3 dim: 227 dim: 227 } } } 期间显然不可用。
  • 损失层:在训练期间,必须定义损失层。该层告诉求解器它应该在每次迭代时调整参数的方向。这种损失将网络的当前预测与预期的“基本事实”进行了比较。损失的梯度反向传播到网络的其余部分,这是推动学习过程的原因。在deploy期间,没有丢失,也没有反向传播。

在caffe中,您提供了一个deploy来描述网络,火车/瓦尔数据集和损失。此外,您提供了描述培训元参数的train_val.prototxt。训练过程的输出是一个solver.prototxt二进制文件,其中包含经过训练的网络参数。
网络经过培训后,您可以使用.caffemodeldeploy.prototxt参数来预测新输入和看不见输入的输出。

答案 1 :(得分:0)

是的但是,有不同类型的.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