我目前正在学习有关Udacity的深度学习课程,目前正在尝试完成第4个作业,在该作业中您应该创建自己的模型,并查看在noMINST数据集上可以实现的最佳精度。
我曾尝试实现VGG 16模型,但遇到了一些问题,最初,损失直接变成了nan,因此我将最后一个激活函数从relu改为了Sigmoid,但现在的准确性不高改善并停留在0-6%左右,因此我猜我的实现是错误的,但似乎看不到错误,我将不胜感激任何帮助或建议!
除了我从数据集中读取数据外,贝勒是我的完整代码,因为我猜这是对的。
<div data-dojo-type="idx/layout/BorderContainer" data-dojo-props="gutters:true" style="width: 100%; height: 100%; border:1px solid">
<div dojotype="dijit.layout.ContentPane" id="DashboardTop" region="top" style="height:100px;">Top pane
</div><div dojotype="dijit.layout.ContentPane" id="DashboardLeft" region="left" style="width:300px;">Left Pane
</div><div dojotype="dijit.layout.ContentPane" region="center" id="DashboardCenter">Center Pane
</div><div dojotype="dijit.layout.ContentPane" region="bottom" id="DashboardBottom" style="height:100px;">Botto Pane</div></div>
答案 0 :(得分:1)
我同意@cyniikal,对于此数据集,您的网络似乎过于复杂。使用单层模型,我可以在训练数据上达到93.75%的精度,在测试数据上可以达到86.7%的精度。
在我的模型中,我使用了GradientDescentOptimizer
,就像您所做的那样,将cross_entropy
最小化了。我还使用了大小16
的批量大小。
我的方法与我的方法之间的主要区别在于我:
请参阅此notebook with my single layer model code sample。
如果您想在神经网络中添加层(网络将汇聚更多的困难),我强烈建议您阅读this article on neural nets。具体来说,由于您添加了sigmoid
作为最后一个激活功能,因此我认为您正遭受vanishing gradient problem的困扰。请参见this page来解决vanishing gradient
。
答案 1 :(得分:0)
使用learning_rate可能会产生更好的结果,但可能是您的网络过于复杂(计算超级非凸函数),以至于简单的Gradient Descent无法在此处正常工作。除此之外,我没有发现任何直接问题,但是调试神经网络实现有时会非常棘手。
尝试快速切换到AdamOptimizer或其他高级优化器,或者尝试使用learning_rate。如果您仍然获得超低的测试精度,那么稍后我将尝试使用细齿梳进行测试。