我很难搞清楚每个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)# 层被重塑为4x4x256的映射。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)
如你所见,我使用了二维转置卷积,并指定输出为64,步长为2,滤波器大小为5。这意味着我知道其中一个维度将是64,然而我不知道另外两个维度会是什么,也不知道如何计算它们。
我尝试使用以下公式,但对我来说行不通…
我该如何计算剩余的维度呢?
回答:
你写的公式是针对卷积操作的,由于你需要计算转置卷积
的维度,而转置卷积的形状是卷积的逆操作,因此可以通过重新排列上述方程的项来推导出公式:
W = (Out-1)*S + F - 2P
W
是你实际的输出,Out
是你输入到转置卷积
的实际输入。