Arbitrary/unknown Tensorflow 的输出形状 conv2d_transpose

Arbitrary/unknown output shape of Tensorflow conv2d_transpose

假设我有一个不同高度的张量,即形状 [batch_size=32,高度=None,宽度=25,n_channels=128]。我想使用 conv2d_transpose 操作对该张量进行上采样,但我不确定如何生成所需的 output_shape 参数。在已知身高的情况下,我会做类似

的事情
def get_conv_transpose_shape(input, out_channels):
    out_shape = input.get_shape().as_list()
    out_shape[1] *= 2
    out_shape[2] *= 2
    out_shape[3] = out_channels
    return out_shape

但是当height=None时,会产生如下错误

TypeError: unsupported operand type(s) for *= 'NoneType' and 'int'

除了将我的所有输入零填充到标准大小之外,是否有其他解决方案?这是我想避免的计算成本。

当您调用 .get_shape().as_list() 时,您最终 "static python land" 试图将 Noneint 相乘。

操作应该在符号域中进行,即将tensorflow.get_shape(input)与另一个int类型的符号变量相乘。