假设我有一个不同高度的张量,即形状[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 回答
当您调用
.get_shape().as_list()
时,您最终会在"static python land"中尝试将None
与int
相乘 .该操作应在符号域中进行,即将
tensorflow.get_shape(input)
与另一个类型为int
的符号变量相乘 .