python实现Mnist手写体数字识别,代码实现
时间: 2023-08-29 21:05:33 浏览: 112
好的,下面是Python实现Mnist手写数字识别的代码:
```python
import numpy as np
import tensorflow as tf
from tensorflow.keras.datasets import mnist
# 加载数据集
(x_train, y_train), (x_test, y_test) = mnist.load_data()
# 数据预处理
x_train = x_train.reshape(-1, 28 * 28).astype(np.float32) / 255.0 # 归一化
x_test = x_test.reshape(-1, 28 * 28).astype(np.float32) / 255.0
y_train = y_train.astype(np.int32)
y_test = y_test.astype(np.int32)
# 构建模型
model = tf.keras.models.Sequential([
tf.keras.layers.Dense(256, activation=tf.nn.relu),
tf.keras.layers.Dense(10)
])
# 定义损失函数和优化器
loss_fn = tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True)
optimizer = tf.keras.optimizers.Adam()
# 训练模型
model.compile(optimizer=optimizer, loss=loss_fn, metrics=['accuracy'])
model.fit(x_train, y_train, epochs=5, batch_size=64, validation_data=(x_test, y_test))
# 评估模型
model.evaluate(x_test, y_test, verbose=2)
```
这个代码使用了 TensorFlow 框架,首先从 Mnist 数据集中加载训练集和测试集。然后对数据进行归一化处理,将像素值从 0-255 缩放到 0-1 之间。接着构建一个简单的神经网络模型,包含一个具有 256 个神经元的全连接层和一个输出层,输出层的神经元数为 10,对应数字 0-9。模型的损失函数使用了交叉熵,优化器使用了 Adam。在训练过程中,使用了验证集来监测模型的性能。最后,使用测试集对模型进行评估。