python - 为什么我需要将我的输入数据 reshape 为 Conv2D 的额外维度?

标签 python tensorflow input keras deep-learning

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

相关文章:

python - flask 安全 : Customize Email Templates

python - Pytorchunet语义分割

javascript - 是否可以重复使用同一个文本框来获取 HTML 和 Javascript 中的用户输入?

java - 组合输入 validator

python - Pyspark:json对象中的rdd

python - .append() 不会将列表添加到列表列表中

memory - Tensorflow:如何减少仅推理模型的内存占用?

c++ - 为什么需要第二个 cin.ignore() ?

python - 使用 sklearn 通过列转换器创建虚拟变量

python - ConvNN 奇怪的准确率分数和准确率图