TensorFlow 与深度学习 (12) 卷积网络:实验
为了将我们的代码转化为卷积模型,我们需要为卷积层定义适当的权重张量,然后将该卷积层添加到模型中。
我们已经见过到卷积层需要以下形式的权重张量。下面代码是用 TensorFlow 语法来对其初始化:
1 | W = tf.Variable(tf.truncated_normal([4, 4, 3, 2], stddev=0.1)) |
TensorFlow 中,使用 tf.nn.conv2d
函数实现卷积层,该函数使用提供的权重在两个方向上扫描输入图片。这仅仅是神经元的加权和部分,你还需要添加偏置,并将加权和传给激活函数。
1 | stride = 1 # output is still 28x28 |
不要太在意 stride 的复杂语法,欲知详情请查文档。这里的 padding 策略是复制边缘的像素。所有的数字都在一个统一的背景下,所以这仅仅扩展了背景,不应该添加任何不需要的形状。
现在轮到你了。修改你的模型并将其转化为卷积模型。你可以使用上图中的值来修改它,你可以保留学习速率衰减,但是务必先移除 dropout。
解答可以在
mnist_3.0_convolutional.py
找到。如果卡住可以看它。
你的模型的准确率应该会超过 98%,并且最终很接近 99%。眼看目标就要实现,我们不能停下!看看测试的交叉熵曲线,是不是想到了一个解决方案?