我是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)
答案 0 :(得分:2)
这很有道理。卷积层需要许多输入通道。对于RBG图像,该数字为3。对于某些数据(例如灰度图像或显然具有的任何数据),通道数为1。但是,该通道仍需要显式存在-它不能简单地是暗示。
答案 1 :(得分:2)
是的,这是正确的事情。
Conv2D
图层应用于2D数据。 2D数据可能具有多个通道。在您的情况下,通道数等于1。由于此Conv2D
设计用于多个通道,因此您必须添加此额外的维,以声明数据具有多少个通道(在您的情况下为1个通道)
答案 2 :(得分:2)
Conv2D
期望4个正确的尺寸,它们是:(BatchSize, Channel, Width, Height)
。
对于彩色图像,通常具有3个RGB通道的色彩强度,对于灰度图像则只有一个。