ValueError: Error when checking input: expected input_1 to have 4 dimensions, but got array with shape (60000, 28, 28)
时间: 2024-05-04 08:21:28 浏览: 268
这个错误通常是由于输入的数据维度不正确导致的。在这个例子中,模型期望的输入维度是 4,但是实际输入的维度是 3。
一种可能的解决方法是将数据重塑为 4 维,例如使用 `np.expand_dims` 函数将其增加一个维度,使得它与模型期望的输入维度匹配。示例代码如下:
```
import numpy as np
from keras.models import Sequential
from keras.layers import Dense, Flatten, Conv2D
# Load data
(X_train, y_train), (X_test, y_test) = mnist.load_data()
# Reshape data
X_train = np.expand_dims(X_train, axis=3)
X_test = np.expand_dims(X_test, axis=3)
# Define model
model = Sequential()
model.add(Conv2D(32, kernel_size=(3, 3), activation='relu', input_shape=(28, 28, 1)))
model.add(Conv2D(64, kernel_size=(3, 3), activation='relu'))
model.add(Flatten())
model.add(Dense(10, activation='softmax'))
# Compile model and train
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
model.fit(X_train, y_train, batch_size=128, epochs=10, validation_data=(X_test, y_test))
```
在这个例子中,我们使用了 `np.expand_dims` 函数将 `X_train` 和 `X_test` 数组从 3 维重塑为 4 维。注意,在这里我们将 `axis` 参数设置为 3,因为我们希望在最后一个维度上增加一个新的维度。现在,模型应该能够接受这些输入,并且你应该不再看到 "ValueError: Error when checking input" 的错误了。
阅读全文