手写数字识别python代码
时间: 2023-07-27 08:07:56 浏览: 155
Python手写数字识别代码-手写板
以下是一个使用Keras库实现手写数字识别的Python代码:
```python
import numpy as np
import matplotlib.pyplot as plt
from keras.datasets import mnist
from keras.models import Sequential
from keras.layers import Dense, Dropout, Flatten
from keras.layers.convolutional import Conv2D, MaxPooling2D
from keras.utils import np_utils
# 加载数据集
(X_train, y_train), (X_test, y_test) = mnist.load_data()
# 将数据集转换为浮点数并进行归一化处理
X_train = X_train.astype('float32') / 255
X_test = X_test.astype('float32') / 255
# 将标签转换为one-hot编码
y_train = np_utils.to_categorical(y_train)
y_test = np_utils.to_categorical(y_test)
# 定义模型
model = Sequential()
model.add(Conv2D(32, (5, 5), input_shape=(28, 28, 1), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.2))
model.add(Flatten())
model.add(Dense(128, activation='relu'))
model.add(Dense(10, activation='softmax'))
# 编译模型
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
# 训练模型
model.fit(X_train.reshape(-1, 28, 28, 1), y_train, validation_data=(X_test.reshape(-1, 28, 28, 1), y_test), epochs=10, batch_size=200, verbose=2)
# 评估模型
scores = model.evaluate(X_test.reshape(-1, 28, 28, 1), y_test, verbose=0)
print("Error: %.2f%%" % (100-scores[1]*100))
```
这个代码中使用了一个卷积神经网络模型,该模型有一个卷积层、一个池化层、一个Dropout层、一个Flatten层和两个全连接层。在训练过程中,使用了10个epochs和200个batch size。最后,使用测试数据集对模型进行评估,并输出误差率。
阅读全文