4

在这里完成 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

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

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

谢谢。

4

2 回答 2

1

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

于 2016-02-22T12:10:56.723 回答
1

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

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

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

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

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

于 2017-05-05T19:34:41.893 回答