如何使用Keras(tensorflow后端)将4D张量调整为具有“无”值的5D张量

时间:2019-03-11 12:44:07

标签: keras reshape tensor

我需要使用None值重塑张量,以便它可以根据输入图像的大小动态变化。有没有可能的方式???,我厌倦了以下选择:

这是我修改代码的一部分:

选项_1:

x = Conv2D(512, (3, 3), activation='relu', padding='same')(x)

new_dims = (1,None,None,512)

x = Reshape(target_shape= new_dims, name='reshapeconvtolstm')(x)

我得到的错误是:

  

ValueError:试图将'shape'转换为张量,但失败。错误:   不支持任何值。

Option_2:我尝试使用here中所述的(-1)值来解决它:

new_dims = (1,-1,-1,512)

x = Reshape(target_shape= new_dims, name='reshapeconvtolstm')(x)

但是我得到了错误

  

k:0 / device:GPU:0”,send_device_incarnation = 1,   tensor_name =“ edge_3691_loss / add”,tensor_type = DT_FLOAT,   _device =“ / job:localhost / replica:0 / task:0 / device:CPU:0”]()]] 2019-03-11 14:13:46.806892:W tensorflow / core / framework / op_kernel.cc:1273 ]   OP_REQUIRES在reshape_op.h:51失败:参数无效:仅一个   输入大小可能是-1,而不是2和3都例外:仅一个输入大小   可能是-1,而不是2和3

Option_3:

此外,我尝试使用输入图像的大小对其进行调整,并尝试了以下选项:

new_dims = (1,352,240,512)

x = Reshape(target_shape= new_dims, name='reshapeconvtolstm')(x)

但是我得到了错误

  

构建网络后出现错误:例外:重塑的输入是   张量为168960的张量,但请求的形状为43253760            [[{{node reshapeconvtolstm / Reshape}} =整形[T = DT_FLOAT,Tshape = DT_INT32,   _class = [“ loc:@ training / Adam / gradients / reshapeconvtolstm / Reshape_grad / Reshape”],   _device =“ / job:localhost / replica:0 / task:0 / device:GPU:0”](block5_conv3 / Relu-2-0-TransposeNCHWToNHWC-LayoutOptimizer,   reshapeconvtolstm / Reshape / shape)]

我需要将其调整为 None 值,以使其随输入内容和要素图的大小而变化。与选项1一样,有任何线索吗?

0 个答案:

没有答案