假设我有一个不同高度的张量,即形状[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
除了将所有输入零填充到标准尺寸之外,还有解决方案吗?这是我想避免的计算成本。
答案 0 :(得分:1)
当您致电.get_shape().as_list()
时,您最终会进入“静态蟒蛇之地”,试图将None
与int
相乘。
操作应在符号域中进行,即将tensorflow.get_shape(input)
与另一个int
类型的符号变量相乘。