卷积神经网络手写数字识别代码
时间: 2023-09-14 19:06:23 浏览: 88
好的,下面是一个简单的卷积神经网络(CNN)手写数字识别代码:
```python
import tensorflow as tf
from tensorflow.keras.datasets import mnist
# 加载 MNIST 数据集
(x_train, y_train), (x_test, y_test) = mnist.load_data()
# 将像素值缩放到 [0, 1]
x_train, x_test = x_train / 255.0, x_test / 255.0
# 定义模型
model = tf.keras.models.Sequential([
tf.keras.layers.Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1)),
tf.keras.layers.MaxPooling2D((2, 2)),
tf.keras.layers.Conv2D(64, (3, 3), activation='relu'),
tf.keras.layers.MaxPooling2D((2, 2)),
tf.keras.layers.Flatten(),
tf.keras.layers.Dense(128, activation='relu'),
tf.keras.layers.Dense(10)
])
# 编译模型
model.compile(optimizer='adam',
loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),
metrics=['accuracy'])
# 训练模型
model.fit(x_train.reshape((-1, 28, 28, 1)), y_train, epochs=5, validation_data=(x_test.reshape((-1, 28, 28, 1)), y_test))
# 评估模型
model.evaluate(x_test.reshape((-1, 28, 28, 1)), y_test, verbose=2)
```
这个代码使用了 TensorFlow 的 Keras API 来构建一个两层卷积神经网络来识别手写数字。它使用的是 MNIST 数据集,其中包含了 28x28 像素的灰度手写数字图像。模型的输出是一个长度为 10 的向量,每个元素代表一个数字类别的概率。模型使用交叉熵损失函数和 Adam 优化器进行训练,并评估训练集和测试集的准确率。
阅读全文
相关推荐
















