TensorFlow2.0 mnist手写字体分类实战

step1 先导入一些必要的库

import numpy as np
import matplotlib.pyplot as plt
import tensorflow.python.keras as keras
from tensorflow.python.keras import layers
from tensorflow.keras.datasets import mnist

step2 加载数据 处理数据

(x_train, y_train), (x_test, y_test) = mnist.load_data()
#归一化
x_train = x_train / 255.0
x_test = x_test / 255.0

step3 搭建神经网络设置损失函数

model = keras.Sequential()

#Flatten层用来将输入“压平”,即把多维的输入一维化,
model.add(layers.Flatten(input_shape=(28, 28)))
model.add(layers.Dense(128, activation='relu'))
model.add(layers.Dropout(0.2))   #解决过拟合的问题
model.add(layers.Dense(10, activation='softmax'))

model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
#mse均方误差 mae平均绝对误差 mape平均绝对百分比误差
model.fit(x_train, y_train, epochs=5)
res = model.evaluate(x_test, y_test)
# 返回损失和精度
print(model.metrics_names)
print(res)

step4 测试

# 随机选取图片测试
img_random = x_test[np.random.randint(0, len(x_test))]

#np.random.randint() 作为numpy库的一种方法,参数更丰富,相比于ranom.randint() 具备size参数 可指定outpud的元素的shape属性
plt.imshow(img_random)
plt.show()
#plt.imshow()函数负责对图像进行处理,并显示其格式,但是不能显示。 其后跟着plt.show()才能显示出来。

# 模型预测
img_random = (np.expand_dims(img_random, 0)) #扩展维度 0是代表的维度
prob = model.predict(img_random)
print(np.argmax(prob)) #取出最大值的索引

实验结果
在这里插入图片描述
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值