解决Keras模型输入形状不匹配的ValueError错误
在创建Keras模型时,输入层的形状应该与实际输入的形状相匹配。当出现'ValueError: Input 0 of layer "sequential_16" is incompatible with the layer: expected shape=(None, 1000, 1), found shape=(None, 130, 1)'错误时,意味着实际输入的形状与模型期望的输入形状不一致。
为了解决这个问题,我们需要在模型的输入层中将形状更改为实际输入的形状。例如,如果实际输入的形状是(None, 130, 1),而模型的输入层的形状是(None, 1000, 1),则需要将模型的输入层的形状更改为(None, 130, 1)。
以下代码展示了如何修改模型的输入层形状:
model = Sequential()
model.add(Conv1D(filters=32, kernel_size=3, activation='relu', input_shape=(130, 1))) # 将输入层的形状更改为(130,1)
model.add(MaxPooling1D(pool_size=2))
model.add(Conv1D(filters=64, kernel_size=3, activation='relu'))
model.add(MaxPooling1D(pool_size=2))
model.add(Flatten())
model.add(Reshape((-1, 64)))
model.add(LSTM(64))
model.add(Dense(64, activation='relu'))
model.add(Dense(2, activation='softmax'))
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
同时,在训练和测试模型时也要确保输入的形状与模型的输入层形状一致:
history = model.fit(X_train.reshape((-1, 130, 1)), y_train, epochs=5, batch_size=16, validation_split=0.2)
score = model.evaluate(X_test.reshape((-1, 130, 1)), y_test, verbose=0)
通过以上修改,即可解决'ValueError: Input 0 of layer "sequential_16" is incompatible with the layer: expected shape=(None, 1000, 1), found shape=(None, 130, 1)'错误。
原文地址: https://www.cveoy.top/t/topic/lKTl 著作权归作者所有。请勿转载和采集!