如何解决 input/output shape error Conv1D (Temporal CNN)

How to solve input/output shape error Conv1D (Temporal CNN)

我是 运行 Keras 中的 Conv1D 模型。我收到一条错误消息:“层 conv1d 的输入 0 与层不兼容::预期 min_ndim=3,发现 ndim=2。收到的完整形状:(None, 4097)”

我为每个样本提供给模型的输入数据帧包含一行 4097 个时间序列信号(振动数据),输出包含 8 个 类。我的训练和测试数据的x和y的形状如下:

x_train.shape:(316, 4097)
y_test.shape:(1395, 8)
x_test.shape:(1395, 4097)
y_train.shape:(316, 8)

以下也是我的模型组件,如果有熟悉这个问题的朋友可以指导我,我将不胜感激。

model = Sequential([
    Conv1D(filters=32, kernel_size=3, activation='relu', padding = 'same', input_dim=x_train.shape[1]),
    MaxPool1D(pool_size=2, strides=2),
    Conv1D(filters=64, kernel_size=3, activation='relu', padding = 'same'),
    MaxPool1D(pool_size=2, strides=2),
    Conv1D(filters=128, kernel_size=3, activation='relu', padding = 'same'),
    MaxPool1D(pool_size=2, strides=2),
    Conv1D(filters=256, kernel_size=3, activation='relu', padding = 'same'),
    MaxPool1D(pool_size=2, strides=2),
    Flatten(),
    Dense(y_train.shape[1], activation='relu')
])
model.compile(optimizer=Adam(learning_rate=0.0001), loss='categorical_crossentropy', metrics=['accuracy'])
model.fit(x_train,y_train,validation_data=(x_test,y_test),verbose=2,epochs=200)

亲切的问候,

穆斯塔法

我认为形状应该是批量 x 长度 x 通道,您缺少通道信息。将数据重塑为

x_train.shape:(316, 4097,1)
y_test.shape:(1395, 8)
x_test.shape:(1395, 4097,1)
y_train.shape:(316, 8)

您可以使用 numpy.expand_dims 功能。

input_dim更改为x_train.shape[1::](4097,1)