【问题标题】:Hard to understand Caffe MNIST example难以理解的 Caffe MNIST 示例
【发布时间】:2016-06-02 16:51:33
【问题描述】:

在这里完成 Caffe 教程后:http://caffe.berkeleyvision.org/gathered/examples/mnist.html

我对本教程中使用的不同(高效)模型感到非常困惑,该模型在此处定义:https://github.com/BVLC/caffe/blob/master/examples/mnist/lenet_train_test.prototxt

据我了解,Caffe 中的卷积层只是计算每个输入的 Wx+b 之和,而不应用任何激活函数。如果我们想添加激活函数,我们应该在该卷积层的正下方添加另一个层,例如 Sigmoid、Tanh 或 Relu 层。我在互联网上阅读的任何论文/教程都将激活函数应用于神经元单元。

这给我留下了一个很大的问号,因为我们只能看到模型中交错的卷积层和池化层。我希望有人能给我一个解释。

作为站点说明,我的另一个疑问是此求解器中的 max_iter: https://github.com/BVLC/caffe/blob/master/examples/mnist/lenet_solver.prototxt

我们有 60000 张图像用于训练,10000 张图像用于测试。那么为什么这里的 max_iter 只有 10.000(它仍然可以获得 > 99% 的准确率)? Caffe 在每次迭代中都做了什么? 实际上,我不太确定准确率是否是正确预测/测试的总大小。

我对这个示例感到非常惊讶,因为我还没有找到任何示例,框架可以在很短的时间内达到如此高的准确率(只需 5 分钟即可获得 >99% 的准确率)。因此,我怀疑应该是我误解了什么。

谢谢。

【问题讨论】:

  • 恒等式 y=x 也可以被认为是一个激活函数,其导数等于 1。这样的激活层只会在前向传递中复制值,在反向传递中将值乘以 1。所以可以省略。您可以使用几乎任何单调函数作为反向传播算法中的激活函数。

标签: deep-learning convolution caffe mnist


【解决方案1】:

Caffe 使用批处理。 max_iter 是 10,000,因为 batch_size 是 64。No of epochs = (batch_size x max_iter)/No of train samples。所以epochs的数量接近10个。准确率是在test data上计算的。是的,模型的准确率确实 > 99%,因为数据集不是很复杂。

【讨论】:

  • 你可以在solver.prototxt阅读here更多关于batch_sizemax_iter的信息。
  • 你好,你能解释一下为什么卷积层之后没有caffe激活层的第一个问题吗?
【解决方案2】:

对于您关于缺少激活层的问题,您是正确的。本教程中的模型缺少激活层。这似乎是对教程的疏忽。对于真正的 LeNet-5 模型,卷积层之后应该有激活函数。对于 MNIST,该模型在没有额外的激活层的情况下仍然可以正常工作。

作为参考,在 Le Cun 2001 年的论文中,它指出:

与经典神经网络一样,最多 F6 层中的单元计算其输入向量和权重向量之间的点积,并添加一个偏差。这个加权和,表示为 a_i,对于单元 i,然后通过一个 sigmoid 压缩函数来产生单元 i 的状态 ...

F6 是两个全连接层之间的“blob”。因此,第一个全连接层应该应用激活函数(本教程使用 ReLU 激活函数而不是 sigmoid)。

MNIST 是神经网络的 hello world 示例。按照今天的标准,这非常简单。单个全连接层可以解决问题,准确率约为 92%。 Lenet-5 比这个例子有很大的改进。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-22
    相关资源
    最近更新 更多