为什么我需要将输入数据重塑为Conv2D的附加尺寸?

时间:2019-10-30 15:55:42

标签: python tensorflow input keras deep-learning

我是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)

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:2)

是的,这是正确的事情。

Conv2D图层应用于2D数据。 2D数据可能具有多个通道。在您的情况下,通道数等于1。由于此Conv2D设计用于多个通道,因此您必须添加此额外的维,以声明数据具有多少个通道(在您的情况下为1个通道)

答案 2 :(得分:2)

Conv2D期望4个正确的尺寸,它们是:(BatchSize, Channel, Width, Height)

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