Deep learning 难以理解的Caffe MNIST示例

Deep learning 难以理解的Caffe MNIST示例,deep-learning,convolution,caffe,mnist,Deep Learning,Convolution,Caffe,Mnist,完成Caffe教程后,请点击此处: 我对本教程中使用的不同(且高效)模型感到困惑,该模型定义如下: 据我所知,Caffe中的卷积层只计算每个输入的Wx+b之和,而不应用任何激活函数。如果我们想添加激活函数,我们应该在卷积层的正下方添加另一层,比如Sigmoid、Tanh或Relu层。我在互联网上读到的任何论文/教程都将激活功能应用于神经元单元 这给我留下了一个大问号,因为我们只能看到模型中的卷积层和池层交错。我希望有人能给我一个解释 作为一个站点说明,我的另一个疑问是该解算器中的max_iter

完成Caffe教程后,请点击此处:

我对本教程中使用的不同(且高效)模型感到困惑,该模型定义如下:

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

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

作为一个站点说明,我的另一个疑问是该解算器中的max_iter:

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

我对这个例子感到非常惊讶,因为我还没有发现任何一个例子,框架可以在很短的时间内达到如此高的准确率(只有5分钟,准确率就超过99%)。因此,我怀疑我是否误解了什么


谢谢。

Caffe使用批处理。
max\u iter
为10000,因为
batch\u size
为64<代码>历代数量=(批量大小x最大值)/列车样本数量。因此,
epoch
的数量接近10个。根据
测试数据
计算精度。是的,由于数据集不是很复杂,模型的准确率确实>99%。

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

作为参考,乐村在2001年的论文中指出:

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

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


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

你可以在
solver.prototxt
中阅读更多关于
batch\u size
max\u iter
的内容。嘿,你能解释一下卷积层之后没有caffe激活层的第一个问题吗?y=x也可以被认为是激活函数,导数等于1。这样的激活层只需在正向过程中复制值,在反向过程中将值乘以1。所以可以省略。在反向传播算法中,几乎可以使用任何单调函数作为激活函数。