python - 神经网络的输入大小不匹配
问题描述
我是机器学习的新手,正在尝试为 mnist 时尚数据集构建 CNN,但这个程序中有一些错误说
ValueError:检查输入时出错:预期 conv2d_input 有 4 个维度,但得到了形状为 (60000, 28, 28) 的数组
我尝试了很多解决方案,但没有一个真正奏效。
(x_train,y_train),(x_test,y_test) = mnist_fashion.load_data()
mnist_fashion = tf.keras.datasets.fashion_mnist
x_train,x_test = x_train/255,x_test/255
model = Sequential([
Conv2D(64,(4,4),activation='relu',input_shape = (28,28,1), padding='same'),
MaxPooling2D(pool_size=(2,2)),
Dropout(0.1),
Conv2D(64,(4,4),activation='relu'),
MaxPooling2D(pool_size=(2,2)),
Dropout(0.3),
Flatten(),
Dense(256,activation='relu'),
Dropout(0.5),
Dense(64,activation='relu'),
Dense(10,activation='softmax')
])
model.compile(loss='categorical_crossentropy',optimizer='adam',metrics=['accuracy'])
model.fit(x_train,y_train,epochs=5)
解决方案
将您的数据从 重塑(60000, 28, 28)
为(60000, 28, 28, 1)
:
x_train, x_test = np.expand_dims(x_train, -1), np.expand_dims(x_test, -1)
您可能还想提供一次性编码标签。要转换为 one-hot 编码标签,请执行以下操作:
from sklearn.preprocessing import OneHotEncoder
encoder = OneHotEncoder(n_values=10)
y_train = encoder.fit_transform(np.expand_dims(y_train, -1))
y_test = encoder.transform(np.expand_dims(y_test, -1))
推荐阅读
- eclipse-hono - 在同一台本地机器上连接 Eclipse Hono 和 Eclipse Ditto
- javascript - 在 Angular 应用程序中用 JaCoCo 替换 Cobertura
- python - 在 odoo12 中安装模块barcodes_generator_abstract 时出错
- python - 如何构建由多个子项目组成的python包?
- node.js - NodeJS:如何等待 runInNewContext 调用的异步脚本?
- authentication - signUpUrl 返回空指针异常
- opencv - 如何计算未失真图像的分辨率?
- angular - 为什么 ngSwitch 没有按预期运行
- python - url在django中没有返回
- text - 如何将 UTF-8 中的文本限制为仅脚本字符?