基于TensorFlow框架的手写数字识别项目代码
时间: 2024-12-25 15:08:49 浏览: 0
NLP.zip_NLP_TensorFlow 识别_tensorflow_手写数字识别
基于TensorFlow框架的手写数字识别项目通常会用到深度学习中的卷积神经网络(Convolutional Neural Networks, CNN)。这里是一个简化的示例,展示了如何使用Keras API创建一个简单的MNIST数据集手写数字识别模型:
```python
import tensorflow as tf
from tensorflow.keras import datasets, layers, models
# 加载MNIST数据集
(train_images, train_labels), (test_images, test_labels) = datasets.mnist.load_data()
# 数据预处理
train_images = train_images.reshape((60000, 28, 28, 1)) / 255.0
test_images = test_images.reshape((10000, 28, 28, 1)) / 255.0
train_labels = tf.keras.utils.to_categorical(train_labels)
test_labels = tf.keras.utils.to_categorical(test_labels)
# 构建CNN模型
model = models.Sequential()
model.add(layers.Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1)))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(64, (3, 3), activation='relu'))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Flatten())
model.add(layers.Dense(64, activation='relu'))
model.add(layers.Dropout(0.5))
model.add(layers.Dense(10, activation='softmax'))
# 编译模型
model.compile(optimizer='adam',
loss='categorical_crossentropy',
metrics=['accuracy'])
# 训练模型
history = model.fit(train_images, train_labels, epochs=10,
validation_data=(test_images, test_labels))
# 评估模型
test_loss, test_acc = model.evaluate(test_images, test_labels, verbose=2)
print('\nTest accuracy:', test_acc)
# 相关问题--
1. 在这个模型中,为什么要添加Dropout层?
2. 如何保存和加载训练好的模型?
3. 如果想提高模型性能,可以尝试哪些调整策略?
```
阅读全文