使用Sequential模型 识别手写数字集

这里将使用代码来表示,由于某些原因自己的电脑无法识别单个手写数字集图片

这只是本人的一个学习记录…

Code:

# 定义库 查看tensorflow 和 keras版本
import tensorflow as tf
tf.__version__, tf.keras.__version__

# 定义其他相关库
import numpy as np
import matplotlib.pyplot as plt

# use the GPU
gpus = tf.config.experimental.list_physical_devices('GPU')
tf.config.experimental.set_memory_growth(gpus[0], True)

# 加载 mnist 数据集
mnist = tf.keras.datasets.mnist
(train_x, train_y), (test_x, test_y) = mnist.load_data()

# 定义隐含层 tf,keras.layers.Flatten() [将图片转化为一个长条]
X_train = train_x.reshape((60000, 28*28))
X_test = test_x.reshape((10000, 28*28))

# 数据归一化, 因为图片的像素值在 0~255 之间
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.compile(optimizer = 'adam',
             loss = 'sparse_categorical_crossentropy',
             metrics = ['sparse_categorical_accuracy'])
# 训练模型
model.fit(X_train, y_train, batch_size = 64, epochs = 5, validation_split=0.2)

# 评估模型
model.evaluate(X_test, y_test, verbose=2)

# 挑选一个图片,并得到图片中的数字
plt.axis("off")
plt.imshow(test_x[0],cmap="gray")
plt.show()
y_test[0]

#识别该图片
# model.predict([[X_test[0]]])
# np.argmax(model.predict([[X_test[0]]]))

# 使用模型测试一组连续的数据
for i in range (4):
    plt.subplot(1, 4, i + 1)
    plt.axis('off')
    plt.imshow(test_x[i], cmap = "gray")
    plt.title(test_y[i])
plt.show()
model.predict(X_test[0:4])
np.argmax(model.predict(X_test[0:4]), axis = 1)

在最后的连续数据测试中可以得到如下结果
在这里插入图片描述
接下来是训练模型对这几张图片的识别结果
在这里插入图片描述
可见 arry([7, 2, 0, 1])与图片中数字的顺序完全相同,因此识别成功

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

He_xj

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值