一维卷积神经网络输入形状问题

时间:2021-07-04 14:55:16

标签: python tensorflow keras conv-neural-network data-science

我正在尝试为数值数据集构建一个 1D CNN。我的数据集有 520 行和 13 个特征。这是下面的代码。

它给 “ValueError:输入 0 层序列_21 与层不兼容::预期 min_ndim=3,发现 ndim=2。收到完整形状:(1, 13)”错误。

我需要如何设置输入形状,或者我是否必须重塑 X_train?非常感谢任何帮助。

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.20)
n_features = 13
model = Sequential()
model.add(Conv1D(filters=1, kernel_size=1, activation='relu', input_shape=(1, n_features)))
model.add(Conv1D(filters=1, kernel_size=1, activation='relu'))
model.add(Dropout(0.5))
model.add(MaxPooling1D(pool_size=1))
model.add(Flatten())
model.add(Dense(100, activation='relu'))
model.add(Dense(2, activation='softmax'))
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
model.fit(X_train, y_train, epochs=20, batch_size=1)
yhat_classes = model.predict_classes(testX, verbose=0)

1 个答案:

答案 0 :(得分:0)

问题是批处理 numpy 数据集会产生行。现在您使用批量大小 1,因此生成器生成 1 行,生成形状为 (1, n_features) 的数组,但您需要形状为 (batch_size, 1, n_features)

在拆分数据集之前向数据集添加维度应该可以解决问题

X = X.reshape(-1, 1, n_features)