首页 文章

很难理解Caffe MNIST的例子

提问于
浏览
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%的准确率) . 因此,我怀疑应该有一些我误解的东西 .

谢谢 .

2 回答

  • 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% .

  • 1

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

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

    在经典神经网络中,层数高达F6的单位计算其输入向量与其权重向量之间的点积,并向其添加偏差 . 然后,对于单位i,该加权和表示为a_i,然后通过S形挤压函数以产生单元i的状态...

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

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

相关问题