不要过分在意 stride 的复杂语法,查阅文档就能获取完整的详细信息。这里的填充(padding)策略是为了复制图片的边缘的像素。所有的数字都在一个统一的背景下,所以这仅仅是扩展了背景,并且不应该添加不需要的任何样式。 现在该你了。修改你的模型并将其转化为卷积模型。你可以使用上图中的值来修改它,你可以减小你的学习速率但是务必先移除 dropout。 你的模型的准确率应该会超过 98%,并且最终达到约 99%。眼看目标就要实现,我们不能停止!看看测试的交叉熵曲线。在你的头脑中,此时,是否解决方案正在形成?
13、99% 准确率的挑战 调整你的神经网络的一个好方法:先去实现一个限制较多的神经网络,然后给它更多的自由度并且增加 dropout,使神经网络避免过拟合。最终你将得到一个相当不错的神经网络。 例如,我们在第一层卷积层中仅仅使用了 4 个 patch,如果这些权重的 patch 在训练的过程中发展成不同的识别器,你可以直观地看到这对于解决我们的问题是不够的。手写数字模式远多于 4 种基本样式。 因此,让我们稍微增加 patch 的数量,将我们卷积层中 patch 的数量从 4,8,12 增加到 6,12,24,并且在全连接层上添加 dropout。它们的神经元重复使用相同的权重,在一次训练迭代中,通过冻结(限制)一些不会对它们起作用的权重,dropout 能够有效地工作。 加油吧,去打破 99%的限制。增加 patch 数量和通道的数量,如上图所示,在卷积层中添加 dropout。
解决方案可以在文件 mnist_3.1_convolutional_bigger_dropout.py 中找到。 使用上图所示的模型,在 10000 个测试的数字中,结果仅仅错误了 72 个。你可以在 MNIST 网站上发现,数字识别准确率的世界纪录大约为 99.7%,这仅比我们用 100 行 Python/TensorFlow 代码构建的模型的准确率高 0.4%。 最后,不同的 dropout 使我们能够训练更大的卷积网络。增加神经网络的额外自由度,使模型的最终准确率从 98.9% 达到 99.1%。向卷积层中增加 dropout 不仅减少了测试误差,而且使我们模型的准确率突破 99%,甚至达到了 99.3%。 14、恭喜! 你已经建立了你的第一个神经网络,并且训练精度达到了 99%。在这个学习过程中,你所学到的技术,并不局限于 MNIST 数据集。实际上,这些技术在训练神经网络的过程中被广泛使用。作为礼物,下面提供的内容可以用来帮助你回忆已经所学的内容。 在完成了完全神经网络和卷积网络后,你应该学习循环神经网络:https://www.tensorflow.org/tutorials/recurrent/。 在本教程中,你已经学习了如何在矩阵层次构建 TensorFlow 模型。Tensorflow 还有更高级的 API,称为 tf.learn:https://www.tensorflow.org/tutorials/tflearn/ 要在云上的分布式框架上训练,我们提供 Cloud ML 服务:https://cloud.google.com/ml 最后,我们希望收到你的反馈。如果你在发现了本实验中的些许错误,或者你认为有什么需要改进的地方,请告诉我们。我们通过 GitHub 处理反馈。反馈链接:https://github.com/googlecodelabs/feedback/issues/new?title=[cloud-tensorflow-mnist]:&labels[]=content-platform&labels[]=cloud ©本文为机器之心编译,转载请联系本公众号获得授权。 ?------------------------------------------------ 加入机器之心(全职记者/实习生):[email protected] 投稿或寻求报道:[email protected] 广告&商务合作:[email protected] (责任编辑:本港台直播) |