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

时间:2016-12-01 17:43:45

标签: python tensorflow conv-neural-network

假设我有一个不同高度的张量,即形状[batch_size = 32,height = None,width = 25,n_channels = 128]。我想用public class MyDeserializer extends StdDeserializer<MyResource> { @Override public myResourcedeserialize(JsonParser parser, DeserializationContext context) throws IOException, JsonProcessingException { MyResource resource = null; Class<? extends MyResource > clazz = null; ObjectMapper mapper = (ObjectMapper) parser.getCodec(); ObjectNode node = (ObjectNode) mapper.readTree(parser); Iterator<Map.Entry<String, JsonNode>> elementsIterator = node.fields(); while (elementsIterator.hasNext()) { Map.Entry<String, JsonNode> element = elementsIterator.next(); if(element.getKey().equals("typeId")) { if(element.getValue().asInt() == 1) { clazz = SpecificResource.class; break; } } } return mapper.treeToValue(node,clazz); } op对此张量进行上采样,但我不确定如何生成所需的conv2d_transpose参数。在已知高度的情况下,我会做类似

的事情
output_shape

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

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

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

1 个答案:

答案 0 :(得分:1)

当您致电.get_shape().as_list()时,您最终会进入“静态蟒蛇之地”,试图将Noneint相乘。

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