基于TensorFlow实现手写数字识别

用TensorFlow库实现的多层神经网络训练手写数字图像,训练得到的模型用于识别图像,但仅限于28*28大小的图片

import tensorflow as tf
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
# print(tf.__version__)
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split

mnist=tf.keras.datasets.mnist
(train_x,train_y),(test_x,test_y)=mnist.load_data()
# x_train=train_x.reshape((60000,28*28))
# y_train=train_y.reshape((10000,28*28))

# 数据预处理:将像素值缩放到 [0,1] 范围内,并转换为浮点型
x_train,x_test=tf.cast(train_x/255.0,tf.float32),tf.cast(test_x/255.0,tf.float32)
y_train,y_test=tf.cast(train_y,tf.int16),tf.cast(test_y,tf.int16)

# 构建模型
model=tf.keras.Sequential()
model.add(tf.keras.layers.Flatten(input_shape=(28,28)))
model.add(tf.keras.layers.Dense(128,activation="relu"))
model.add(tf.keras.layers.Dense(10,activation="softmax"))
# model.summary()

# 编译模型
model.compile(optimizer='adam',
              loss='sparse_categorical_crossentropy',
              metrics=['sparse_categorical_accuracy'])

# 训练模型
model.fit(x_train,y_train,batch_size=64,epochs=5)
# 保存模型
model.evaluate(x_test,y_test,verbose=2)
# 保存模型
model.save("shoxie.keras")
# 加载模型
model=tf.keras.models.load_model("shoxie.keras")

# 可视化部分测试集样本和对应的预测结果
plt.axis("off")
for i in range(4):
    plt.imshow(test_x[i], cmap="gray")
    plt.show()
    print(y_test[i])
    input_data = np.expand_dims(x_test[i], axis=0)  # 适配模型的维度
    a=np.argmax(model.predict(input_data))
    print(a)

结果输出:

938/938 [==============================] - 14s 12ms/step - loss: 0.3061 - sparse_categorical_accuracy: 0.9144
Epoch 2/5
938/938 [==============================] - 9s 10ms/step - loss: 0.1406 - sparse_categorical_accuracy: 0.9585
Epoch 3/5
938/938 [==============================] - 7s 8ms/step - loss: 0.0998 - sparse_categorical_accuracy: 0.9707
Epoch 4/5
938/938 [==============================] - 5s 5ms/step - loss: 0.0758 - sparse_categorical_accuracy: 0.9770
Epoch 5/5
938/938 [==============================] - 5s 5ms/step - loss: 0.0586 - sparse_categorical_accuracy: 0.9829
313/313 - 2s - loss: 0.0743 - sparse_categorical_accuracy: 0.9766 - 2s/epoch - 6ms/step
tf.Tensor(7, shape=(), dtype=int16)
1/1 [==============================] - 0s 222ms/step
7
tf.Tensor(2, shape=(), dtype=int16)
1/1 [==============================] - 0s 77ms/step
2
tf.Tensor(1, shape=(), dtype=int16)
1/1 [==============================] - 0s 52ms/step
1
tf.Tensor(0, shape=(), dtype=int16)
1/1 [==============================] - 0s 63ms/step
0

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值