我在弄清楚每个CNN
层的尺寸时遇到了麻烦。
假设我的输入是一个向量,然后我使用一个完全连接的层将其投影到4x4x256
矩阵上……
zP = slim.fully_connected(
z,
4*4*256,
normalizer_fn=slim.batch_norm,
activation_fn=tf.nn.relu,
scope='g_project',
weights_initializer=initializer
)
# Layer is reshaped to a 4x4x256 mapping.
zCon = tf.reshape(zP,[-1,4,4,256])
z
是我的原始向量。然后,我将这个4x4x256
矩阵放入CNN
...
gen1 = slim.convolution2d_transpose(
zCon,
num_outputs=64,
kernel_size=[5,5],
stride=[2,2],
padding="SAME",
normalizer_fn=slim.batch_norm,
activation_fn=tf.nn.relu,
scope='g_conv1',
weights_initializer=initializer
)
如您所见,我使用了卷积2d转置,并将输出指定为 64 ,跨度为 2 ,过滤器大小为 5 < / em>。这意味着我知道我的一个维度是 64 ,但是我不知道其他两个维度是什么,也不知道如何计算。
我尝试使用以下公式,但对我而言不起作用...
如何计算剩余尺寸?
答案 0 :(得分:1)
您编写的公式用于卷积运算,因为您需要计算transposed convolution
的形状是卷积的逆数,因此可以通过将上述项重新安排为:
W = (Out-1)*S + F - 2P
W
是您的实际输出,而Out
是您对transpose convolution
的实际输入。