使用MNIST数据集进行图像分类(机器学习的“Hello World”练习)

使用MNIST数据集进行图像分类(机器学习的“Hello World”练习)
本次练习的目标是训练深度学习模型对手写数字进行分类

import matplotlib.pyplot as plt
from tensorflow.keras.datasets import mnist # 导入mnist数据集
import matplotlib.pyplot as plt #使用matplotlib
import tensorflow.keras as keras
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense

# ——————————————————————————————————————————————Mnist数据集测试—————————————————————————————————————————————————————————
(x_train,y_train),(x_test,y_test) = mnist.load_data()
# a = x_train.shape  # 输出x_train的数量和尺寸
# b = x_test.shape   # 输出x_test的数量和尺寸
# c = x_test.dtype   # 输出x_test的类型
# d = x_test.min()   # 输出x_test的最小灰度值
# e = x_test.max()   # 输出x_test的最大灰度值
# f = x_test[0]      # 输出x_test第0个数据灰度值的数组
# print()            # 输出你上部分想看的数据属性
#
# # 使用matplotlib模块显示数据集中灰度图像
# image = x_train[0]
# plt.imshow(image,cmap="gray")
# plt.show()
# g = y_train[0] # 输出x_train的标签
# print(g)
# #

# ——————————————————————————————————————————————展平图像数据—————————————————————————————————————————————————————————
# 使用reshape方法将二维图片展连续一维数组
x_train = x_train.reshape(60000,784)
x_test = x_test.reshape(10000,784)
# print(x_test[0]) # 已经展开为一维数组


# ——————————————————————————————————————————————数据归一化—————————————————————————————————————————————————————————
# 深度学习模型在处理0至1之间的数字会更ok(原因我也不知道呜呜)所以把0到255的像素值统统除以255进行归一化
x_train = x_train/255
x_test = x_test/255

# 现在我们就能看见灰度值都介于0和1之间了
x_train.dtype
x_train.min()
x_train.max()


# ——————————————————————————————————————————————对标签多分类编码—————————————————————————————————————————————————————————
# 图像的标签是0到9的整数,由于这些值是一个数值范围,所以需要分类编码,具体的自己查查
num_categories = 10
y_train = keras.utils.to_categorical(y_train,num_categories)
y_test = keras.utils.to_categorical(y_test,num_categories)
# print(y_train[0:9])


# ——————————————————————————————————————————————创建模型—————————————————————————————————————————————————————————
# 输入层,隐藏层,输出层
# 1,模型实例化
model = Sequential()
# 2,创建输入层
model.add(Dense(units=512,activation='relu',input_shape=(784,)))
# 3,创建隐藏层
model.add(Dense(units=512,activation='relu'))
# 4,创建输出层
model.add(Dense(units=10,activation='softmax'))


# ——————————————————————————————————————————————总结模型—————————————————————————————————————————————————————————
# model.summary()  # 用来打印出可读的模型摘要


# ——————————————————————————————————————————————编译模型—————————————————————————————————————————————————————————
model.compile(loss='categorical_crossentropy',metrics=['accuracy'])


# # ——————————————————————————————————————————————训练模型—————————————————————————————————————————————————————————
# fit方法需要的参数 (1,训练数据及其标签,2,训练次数epochs. 3,验证数据)
history = model.fit(x_train,y_train,
                    epochs=5,
                    verbose=1,
                    validation_data=(x_test,y_test))
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值