我在一个 Conv1D 模型中输入了维度为 (2363,2) 的数据。我在输入层中指定的 input_shape 是 (202,2)。这是模型的 CNN 部分:
model_2 = Sequential()model_2.add(Conv1D(256, kernel_size=1, activation='relu', input_shape=(202,2)))model_2.add(BatchNormalization())model_2.add(MaxPooling1D())model_2.add(Conv1D(128, kernel_size=1, activation='relu'))model_2.add(BatchNormalization())model_2.add(MaxPooling1D())model_2.add(Conv1D(64, kernel_size=1, activation='relu'))model_2.add(BatchNormalization())model_2.add(MaxPooling1D())model_2.add(Conv1D(32, kernel_size=1, activation='relu'))model_2.add(BatchNormalization())model_2.add(MaxPooling1D())model_2.add(Flatten())model_2.add(Dense(4,kernel_initializer="uniform",activation='relu'))model_2.add(Dense(1,kernel_initializer="uniform",activation='softmax'))
执行代码时我得到的错误是:
ValueError: Input 0 of layer sequential_1 is incompatible with the layer: : expected min_ndim=3, found ndim=2. Full shape received: (None, 2)
我非常确定这是输入形状和维度的问题,但我对 CNN 还比较新手,能有人帮我纠正这个问题吗?谢谢你的帮助。
回答:
我找到了你的问题
你需要重塑你的训练数据
你可以使用 numpy 来做这件事,
x_train = np.reshape(x_train, (-1,202,2))