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" 试图将 None
与 int
相乘。
操作应该在符号域中进行,即将tensorflow.get_shape(input)
与另一个int
类型的符号变量相乘。
假设我有一个不同高度的张量,即形状 [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" 试图将 None
与 int
相乘。
操作应该在符号域中进行,即将tensorflow.get_shape(input)
与另一个int
类型的符号变量相乘。