cnn手写数字识别python
时间: 2023-07-26 09:38:48 浏览: 98
我可以给你提供一个基于CNN的手写数字识别的Python代码示例。首先,你需要安装一些必要的库,如下所示:
```python
pip install tensorflow keras numpy matplotlib
```
接下来,我们可以开始编写代码。以下是一个基本的CNN模型,用于识别手写数字:
```python
import tensorflow as tf
from tensorflow import keras
from keras.models import Sequential
from keras.layers import Dense, Conv2D, Dropout, Flatten, MaxPooling2D
# 加载MNIST数据集
(x_train, y_train), (x_test, y_test) = keras.datasets.mnist.load_data()
# 将数据集转换为适当的形状
x_train = x_train.reshape(x_train.shape[0], 28, 28, 1)
x_test = x_test.reshape(x_test.shape[0], 28, 28, 1)
input_shape = (28, 28, 1)
# 将数据集转换为浮点数类型并进行归一化
x_train = x_train.astype('float32')
x_test = x_test.astype('float32')
x_train /= 255
x_test /= 255
# 创建CNN模型
model = Sequential()
model.add(Conv2D(28, kernel_size=(3,3), input_shape=input_shape))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Flatten()) # 将图像展平成一维向量
model.add(Dense(128, activation=tf.nn.relu))
model.add(Dropout(0.2))
model.add(Dense(10,activation=tf.nn.softmax))
# 编译模型
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
# 训练模型
model.fit(x=x_train,y=y_train, epochs=10)
# 评估模型
model.evaluate(x_test, y_test)
```
在上面的代码中,我们首先加载MNIST数据集并将其转换为适当的形状。然后,我们创建了一个基本的CNN模型,该模型包含一个卷积层、一个最大池化层、一个展平层、一个全连接层和一个输出层。我们使用`adam`优化器和`sparse_categorical_crossentropy`损失函数来编译模型,并使用`fit`函数来训练模型。最后,我们使用`evaluate`函数评估模型的性能。
阅读全文