首页 文章

Tensorflow conv2d_transpose的任意/未知输出形状

提问于
浏览
0

假设我有一个不同高度的张量,即形状[batch_size = 32,height = None,width = 25,n_channels = 128] . 我想用 conv2d_transpose op对这个张量进行上采样,但我不确定如何生成所需的 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'

除了将所有输入零填充到标准尺寸之外,还有其他解决方案吗?这是我想避免的计算成本 .

1 回答

  • 1

    当您调用 .get_shape().as_list() 时,您最终会在"static python land"中尝试将 Noneint 相乘 .

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

相关问题