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

阅读全文 »

你可能已经注意到,在数千次迭代之后,测试和训练数据的交叉熵曲线开始不相连。学习算法只是在训练数据上做工作并相应地优化训练的交叉熵。它从来看不到测试数据了,所以看到这一点也不必感到奇怪:过了一会儿它不再对测试交叉熵产生影响,交叉熵不再下降,有时甚至反弹回来。

阅读全文 »

随着层数的增加,神经网络越来越难以收敛。但现在我们知道如何控制它们的行为了。这里是一些只用一行就可以实现的改进,这些小技巧会帮到你,当你看到准确度曲线出现如下情况的时候:

阅读全文 »

为了提高识别准确度,我们将为神经网络增加更多层(Layer)。第二层神经元将计算前一层神经元输出的加权和,而非计算像素的加权和。这里有一个 5 层全连接神经网络的例子:

阅读全文 »

单层神经网络的代码已经写好了。请打开 mnist_1.0_softmax.py 文件并按说明进行操作。

你在本节的任务是理解代码,以便之后对其改进。

你应该看到,在文档中的说明和启动代码只有微小的差别。它们对应于可视化的函数,并且在注释中被标记。此处可忽略。

1
2
3
4
5
6
7
import tensorflow as tf

X = tf.placeholder(tf.float32, [None, 28, 28, 1])
W = tf.Variable(tf.zeros([784, 10]))
b = tf.Variable(tf.zeros([10]))

init = tf.initialize_all_variables()
阅读全文 »

现在我们的神经网络从输入图像中产生预测,我们需要知道这个模型有多好,即,事实情况和网络的预测之间到底有多大的距离。回忆下,这个数据集中的所有图像都有一个真实的标签(label)。

任何一种定义的距离都可以进行这样的操作,普通欧几里得距离是可以的,但是对于分类问题,被称为交叉熵(cross-entropy)的距离更加有效。

阅读全文 »

我们首先来观察一个正在训练的神经网络。代码会在下一节解释,所以现在不必查看。

我们的神经网络可以输入手写数字并对它们进行分类,即,将它们识别为 0、1、2……9。它基于内部变量(“权重(weights)”和“偏差(bias)”,会在后面进行解释),需要得到正确的值,分类才能正常工作。这个“正确的值”通过训练过程进行学习,这也将在后面详细解释。你现在需要知道的是,训练回路看起来像这样:

1
Training digits => updates to weights and biases => better recognition (loop)
阅读全文 »
0%