TensorFlow 与深度学习 (14) 恭喜!
你已经建立了你的第一个神经网络,并且达到了 99% 的准确率。在这个过程中,你所学到的技术并不局限于 MNIST 数据集。实际上,这些技术在训练神经网络的过程中被广泛使用。作为礼物,下面提供的内容可以用来帮助你回忆已经所学的内容。
你已经建立了你的第一个神经网络,并且达到了 99% 的准确率。在这个过程中,你所学到的技术并不局限于 MNIST 数据集。实际上,这些技术在训练神经网络的过程中被广泛使用。作为礼物,下面提供的内容可以用来帮助你回忆已经所学的内容。
调整你的神经网络的一个好方法是:先去实现一个限制较多的神经网络,然后给它更多的自由度并且增加 dropout,使神经网络避免过拟合。最终你将得到一个相当不错的神经网络。
例如,我们在第一层卷积层中仅仅使用了 4 个 patch,如果这些权重的 patch 在训练的过程中发展成不同的识别器,你可以直观地看到这对于解决我们的问题是不够的。手写数字模式远多于 4 种基本样式。
因此,让我们稍微增加 patch 的数量,将我们卷积层中 patch 的数量从 4,8,12 增加到 6,12,24,并且在全连接层上添加 dropout。它们的神经元重复使用相同的权重,在一次训练迭代中,通过冻结(限制)一些不会对它们起作用的权重,dropout 能够有效地工作。

在卷积网络层中,一个神经元仅对该图像上的一个小部分的像素求加权和。然后,通常会加上一个偏置,并且将得到的加权和传给激活函数。与全连接网络相比,其最大的区别在于卷积网络的每个神经元重用相同的权重,而不是每个神经元都有自己的权重。

你可能已经注意到,在数千次迭代之后,测试和训练数据的交叉熵曲线开始不相连。学习算法只是在训练数据上做工作并相应地优化训练的交叉熵。它从来看不到测试数据了,所以看到这一点也不必感到奇怪:过了一会儿它不再对测试交叉熵产生影响,交叉熵不再下降,有时甚至反弹回来。
单层神经网络的代码已经写好了。请打开
mnist_1.0_softmax.py 文件并按说明进行操作。
你在本节的任务是理解代码,以便之后对其改进。
你应该看到,在文档中的说明和启动代码只有微小的差别。它们对应于可视化的函数,并且在注释中被标记。此处可忽略。
1 | import tensorflow as tf |
现在我们的神经网络从输入图像中产生预测,我们需要知道这个模型有多好,即,事实情况和网络的预测之间到底有多大的距离。回忆下,这个数据集中的所有图像都有一个真实的标签(label)。
任何一种定义的距离都可以进行这样的操作,普通欧几里得距离是可以的,但是对于分类问题,被称为交叉熵(cross-entropy)的距离更加有效。
