Python 如果指定输出数量,如何在CNN中计算输出维度
我很难弄清楚每个CNN层的尺寸是多少 假设我的输入是一个向量,然后我使用一个完全连接的层将它投影到一个4x4x256矩阵上,所以Python 如果指定输出数量,如何在CNN中计算输出维度,python,tensorflow,machine-learning,conv-neural-network,Python,Tensorflow,Machine Learning,Conv Neural Network,我很难弄清楚每个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
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
如您所见,我使用了卷积2d转置,并将输出指定为64,步长为2,过滤器大小为5。这意味着我知道我的一个维度是64,但是我不知道其他两个维度是什么,我也不知道如何计算它
我试着用下面的公式,但它不适合我
如何计算剩余尺寸?您编写的公式是用于卷积运算的,因为您需要计算转置卷积,其中形状与卷积成反比,因此可以通过将这些项重新排列,从上述方程推导公式: W=Out-1*S+F-2P W是实际输出,Out是转置卷积的实际输入
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
)