我是tensorflow的新手,我有一个这种格式的numpy输入数据:
x_train_n.shape = (200,64,2048)
意思是200是训练数据集的个数,64是H,2048是W
当我想将此输入提供给我的网络时,首先我必须 reshape 它:
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 expected to have 4 dimensions but dimension is 3 的错误。
这是正确的做法吗?如果是这样,为什么这是有道理的?
为什么我不能在没有 reshape 的情况下进行跟随?
output1 = Conv2D(32, (3, 15), strides=(1, 2), padding='same', data_format='channels_first', input_shape=x_train_n.shape())(inputs)
最佳答案
是的,这是正确的做法。
Conv2D
图层应用于二维数据。二维数据可能有多个 channel 。在您的情况下, channel 数等于 1。由于此 Conv2D
旨在应用于多个 channel ,您必须添加此额外维度来声明您的数据有多少个 channel (在您的情况下为 1 个 channel )
关于python - 为什么我需要将我的输入数据 reshape 为 Conv2D 的额外维度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58629296/