我正在尝试构建类似网络的自动编码器,但是我不知道如何指定网络的输出形状。我有一个大小为mxn
的输入和一个成对的pxq
预期输出。我看过
Calculate the Output size in Convolution layer
Getting the output shape of deconvolution layer using tf.nn.conv2d_transpose in tensorflow
但是有一种方法可以强制输出形状而不必为每个输入形状都进行一堆数学运算吗?
答案 0 :(得分:0)
我真的不认为有办法做到这一点(很难的话,我会很乐意学习),因为任何形式的conv层的这种输出形状都是数学运算(卷积)的结果,参数。因此,根据输入张量和参数(步幅,内核大小等),结果形状必须是可能的形状之一。
这与密集的(完全连接的层)形成对比,在密集的层中,只要一个数字(4、60或5000,但不包括(60,60)),您就可以得到任何想要的形状。
在这种情况下有时可以帮助您的一个小技巧是将上一层的形状打印出来,以便您知道下一层需要哪些参数并确保计算正确:
import keras.backend as K
x = Conv2D()(x) # or any other layer
shape = K.int_shape(x)
print(shape)
x = Conv2D()(x)