Neural network MNIST-培训陷入困境
我正在阅读(前两章),我正试图跟随并构建我自己的ANN来对MNIST数据集的数字进行分类 我已经挠头好几天了,因为我的实现在10个纪元之后达到了峰值,在对测试集(约5734/10000)中的数字进行分类时,准确率达到了约57%(训练集的准确率在第十个纪元之后停滞不前,测试集的准确率可能因为过度拟合而下降) 我使用的配置与书中几乎相同:2层前馈神经网络(784-30-10),所有层完全连接;标准sigmoid激活函数;二次成本函数;权重的初始化方式相同(取自平均值为0、标准偏差为1的高斯分布) 唯一的区别是,我使用在线培训而不是批量/小批量培训,学习率为1.0而不是3.0(我尝试过小批量培训+学习率为3.0) 然而,我的实现并没有在一系列时代之后通过60%的百分位数,就像书中所说的那样,ANN在第一个时代之后以几乎完全相同的配置超过了90%。 起初我把反向传播算法的实现搞砸了,但在以不同的方式重新实现了三次反向传播后,每次重新实现的结果都完全相同,我被难倒了 反向传播算法产生的结果示例: 采用与上述配置相同的简单前馈网络(在线训练+学习率1.0):3个输入神经元、2个隐藏神经元和1个输出神经元 初始权重初始化如下:Neural network MNIST-培训陷入困境,neural-network,artificial-intelligence,backpropagation,mnist,feed-forward,Neural Network,Artificial Intelligence,Backpropagation,Mnist,Feed Forward,我正在阅读(前两章),我正试图跟随并构建我自己的ANN来对MNIST数据集的数字进行分类 我已经挠头好几天了,因为我的实现在10个纪元之后达到了峰值,在对测试集(约5734/10000)中的数字进行分类时,准确率达到了约57%(训练集的准确率在第十个纪元之后停滞不前,测试集的准确率可能因为过度拟合而下降) 我使用的配置与书中几乎相同:2层前馈神经网络(784-30-10),所有层完全连接;标准sigmoid激活函数;二次成本函数;权重的初始化方式相同(取自平均值为0、标准偏差为1的高斯分布) 唯
Layer #0 (3 neurons)
Layer #1 (2 neurons)
- Neuron #1: weights=[0.1, 0.15, 0.2] bias=0.25
- Neuron #2: weights=[0.3, 0.35, 0.4] bias=0.45
Layer #2 (1 neuron)
- Neuron #1: weights=[0.5, 0.55] bias=0.6
如果输入为[0.0,0.5,1.0],则输出为0.78900331。
对于相同的输入和1.0的期望输出,反向传播得到以下偏导数(dw=导数wrt权重,db=导数wrt偏差):
用这些偏导数更新网络得到的修正输出值为0.74862305
如果有人愿意证实上述结果,这将对我帮助很大,因为我已经排除了反向传播是错误的问题的原因 有谁在解决MNIST问题时遇到过这个问题吗? 即使是关于我应该检查的东西的建议也会有所帮助,因为我在这里真的迷路了。Doh 结果证明我的反向传播实现没有问题 问题是,我将图像读入一个有符号字符(在C++中)数组,像素值溢出,因此当我除以255.0将输入向量规格化为0.0-1.0范围时,实际上得到了负值…;- 所以基本上我花了大约四天的时间调试和重新实现相同的东西,而问题完全出在其他地方
Layer #0 (3 neurons)
Layer #1 (2 neurons)
- Neuron #1: dw=[0, 0.0066968054, 0.013393611] db=0.013393611
- Neuron #2: dw=[0, 0.0061298212, 0.012259642] db=0.012259642
Layer #2 (1 neuron)
- Neuron #1: dw=[0.072069918, 0.084415339] db=0.11470326