【问题标题】:Why do I need to reshape my input data to an additional dimension for Conv2D?为什么我需要将输入数据重塑为 Conv2D 的附加维度?
【发布时间】:2020-02-25 23:36:57
【问题描述】:

我是 tensorflow 的新手,我有一个这种格式的 numpy 输入数据:

x_train_n.shape = (200,64,2048)

意思是200是训练数据集的个数,64是H,2048是W

当我想将此输入提供给我的网络时,首先我必须对其进行重塑:

x_train_n = x_train_n.reshape(x_train_n.shape[0], 1, rows, cols)

然后

inputs = Input(shape=x_train_n.shape[1:])

output1 = Conv2D(32, (3, 15), strides=(1, 2), padding='same', data_format='channels_first', input_shape=x_train_n.shape[1:])(inputs) 

否则我得到 Conv2d 预期有 4 个维度但维度为 3 个错误的错误。

这是正确的做法吗?如果是这样,为什么这有意义?

为什么不重塑就不能跟随?

output1 = Conv2D(32, (3, 15), strides=(1, 2), padding='same', data_format='channels_first', input_shape=x_train_n.shape())(inputs)

【问题讨论】:

    标签: python tensorflow input keras deep-learning


    【解决方案1】:

    Conv2D 需要 4 个正确的维度,它们是:(BatchSize, Channel, Width, Height)

    对于彩色图像,颜色强度通常有 3 个通道 RGB,对于灰度图像只有一个。

    【讨论】:

      【解决方案2】:

      是的,这是正确的做法。

      Conv2D 层应用于二维数据。 2D 数据可能有多个通道。在您的情况下,通道数等于 1。因此,Conv2D 旨在应用于多个通道,您必须添加这个额外的维度来声明您的数据有多少个通道(在您的情况下为 1 个通道)

      【讨论】:

        【解决方案3】:

        这是有道理的。卷积层需要多个输入通道。对于 RBG 图像,该数字为 3。对于某些数据(例如灰度图像或显然您拥有的任何数据),通道数为 1。但是,该通道仍然需要明确存在 - 它不能简单地存在暗示。

        【讨论】:

          猜你喜欢
          • 2020-10-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-02-10
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多