gpt4 book ai didi

convolution - TensorFlow ConvNet 中的全连接层权重维度

转载 作者:行者123 更新时间:2023-12-03 16:00:51 24 4
gpt4 key购买 nike

我一直在编码 this example TensorFlow 中的卷积网络,我对这种权重分配感到困惑:

weights = {

# 5x5 conv, 1 input, 32 outputs
'wc1': tf.Variable(tf.random_normal([5, 5, 1, 32])),

# 5x5 conv, 32 inputs, 64 outputs
'wc2': tf.Variable(tf.random_normal([5, 5, 32, 64])),

# fully connected, 7*7*64 inputs, 1024 outputs
'wd1': tf.Variable(tf.random_normal([7*7*64, 1024])),

# 1024 inputs, 10 outputs (class prediction)
'out': tf.Variable(tf.random_normal([1024, n_classes]))

}

我们如何知道“wd1”权重矩阵应该有 7 x 7 x 64 行?

它后来被用来 reshape 第二个卷积层的输出:
# Fully connected layer
# Reshape conv2 output to fit dense layer input
dense1 = tf.reshape(conv2, [-1, _weights['wd1'].get_shape().as_list()[0]])

# Relu activation
dense1 = tf.nn.relu(tf.add(tf.matmul(dense1, _weights['wd1']), _biases['bd1']))

根据我的数学,池化层 2(conv2 输出)有 4 x 4 x 64 个神经元。

为什么我们要整形为 [-1, 7*7*64]?

最佳答案

从头开始工作:

输入,_X大小为 [28x28x1] (忽略批处理维度)。 28x28 灰度图像。

第一个卷积层使用PADDING=same ,因此它输出一个 28x28 层,然后将其传递给 max_poolk=2 ,这会将每个维度减少两倍,从而形成 14x14 的空间布局。 conv1 有 32 个输出——所以每个示例的完整张量现在是 [14x14x32] .

这在 conv2 中重复。 ,它有 64 个输出,结果是 [7x7x64] .

tl; dr:图像以 28x28 开始,每个 maxpool 在每个维度上将其缩小两倍。 28/2/2 = 7。

关于convolution - TensorFlow ConvNet 中的全连接层权重维度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34662443/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com