我在学习TensorFlow的’Expert MINST’教程(https://www.tensorflow.org/versions/r0.8/tutorials/mnist/pros/index.html),但在这一部分卡住了:
全连接层
现在图像尺寸已经缩小到7×7,我们添加了一个包含1024个神经元的全连接层,以便对整个图像进行处理。我们将池化层的张量重塑为一批向量,乘以一个权重矩阵,加上偏置,并应用ReLU函数。
为什么是1024这个数字?它从哪里来的?
我对全连接层的理解是,它必须以某种方式恢复到原始图像尺寸(然后我们开始将数据输入到我们的softmax方程中)。在这种情况下,原始图像尺寸是高度 x 宽度 x 通道 = 28*28*1 = 784…而不是1024。
我在这里错过了什么?
回答:
1024只是一个任意的隐藏单元数量。此时,网络的输入已经减少到64个平面,每个平面尺寸为7×7像素。他们并不是试图“恢复到原始图像尺寸”,他们只是声称,他们想要一个能够提取全局特征的层,因此他们希望它与来自最后一个池化层的每个神经元密集连接(这些神经元代表你的输入空间),而之前的操作(卷积和池化)是局部特征。
因此,为了以多层感知器(MLP)的方式处理这些数据,你需要7*7*64=3136个神经元。他们在上面又加了一层1024个神经元,所以如果你画出你的网络,它会是这样的
输入 - 卷积 - 池化 - .... - 卷积 - 池化 - 隐藏 - 输出28 x 28- .... 7*7*64 1024 10 =3136
因此,这个数字是相当任意的,他们只是通过经验测试发现它有效,但你可以在这里使用任何数量的单元,或者任何数量的层。