【问题标题】:After input matrix is constructed, input shape is inconsistent with the network输入矩阵构建后,输入形状与网络不一致
【发布时间】:2020-06-21 15:12:13
【问题描述】:

我正在研究一个使用 tf.keras.Conv2D 的模型,该模型在一段时间内分析多个模式平面,模型输入形状为 (None, 9, 19, 19),9 是数字观察到的时间范围。输入形状之所以如此,是因为我在时间上对齐 19x19 模式以形成一个数组。当转换为 tf.constant 时,该数组的形状为 (9, 19, 19)。

这里有一个问题:tf.keras.Conv2D 默认将输入形状的最后一个条目视为深度,并保持第二个和第三个条目一致。这意味着如果我保持网络输入形状,新的 Conv2D 层采用的形状将具有形状 (None, 9, 19, filter_numer) 但我想要的 2D 维度是 19x19,而不是 9x19。如果我将输入形状从 (9, 19, 19) 更改为 (19, 19, 9),所花费的时间将大大增加,因为会有很多评估。我的程序要求处理时间尽可能短,重塑矩阵将花费比我希望的更多的时间。任何建议将不胜感激。

【问题讨论】:

    标签: python tensorflow keras


    【解决方案1】:

    我想通了,Conv2D 有一个名为 data_format 的可选参数。如果 data_format == 'channels_first'(默认为 'channels_last'),则新的 Conv2D 层将具有预期的形状(None, filter_number, 19, 19)。

    很遗憾,TensorFlow 2.2 尚不支持 channels_first 数据格式:

    tensorflow.python.eager.core._NotOkStatusException: UnimplementedError: {{function_node __inference_keras_scratch_graph_1087}} The Conv2D op currently only supports the NHWC tensor format on the CPU. The op was given the format: NCHW
         [[{{node conv2d/Conv2D}}]] [Op:__inference_keras_scratch_graph_1087]
    

    Convert between NHWC and NCHW in TensorFlow 提供了另一种转换方式。

    (我刚刚意识到我对这个库的了解真的很浅……)

    【讨论】:

      猜你喜欢
      • 2020-12-28
      • 1970-01-01
      • 1970-01-01
      • 2021-08-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多