多层感知机(Muti-Layer perceptron)实现基于图像数据的数字自动识别分类--使用minist数据集实现0-9数字的十分类(附带下载地址, 长期有效)

多层感知机(Muti-Layer perceptron)实现图像多分类


        目标:


                实现基于图像数据的数字自动识别分类
                基于minist数据集, 建立基本的神经网络模型, 实现0-9数字的十分类, 


        模型训练基本流程


                1.数据收集导入---keras内置的minist数据集
                2.数据基本处理---数据可视化,缺失值/异常值处理,数据分割,输出格式转换
                3.特征工程---特征转换:数据维度转换, 特征预处理:归一化
                4.模型训练---
                        模型构建:多层感知器,
                        层数填充:[392:sigmoid, 392:sigmoid, 10:softmax],
                        编译模型:
                                损失函数:categorical_crossentropy,多分类交叉熵, 常与softmax激活函数一起使用
                                        扩展: 相应的, binary_crossentropy二分类交叉熵常与sigmoid结合使用
                                优化算法:adam,可以替代传统随机梯度下降算法的一阶优化算法
                5.模型评估与预测
                        选择合适评估指标:计算准确率
                        利用训练和测试集分别进行预测和评估

代码实现

对图像数字进行识别和分类
############################################################
# 1.导入keras内置数据集minist, 有点sklearn的既视感呀
from keras.datasets import mnist
(x_train, y_train),(x_test, y_test)=mnist.load_data()
print(type(x_train), x_train.shape)   # 训练集的特征值是一个numpy数组, 三维数据, 有6w个样本, 每个图像为28px*28px

###########################################################################
# 2.数据的基本处理
# 缺失值/异常值处理, 但因为是keras内置的数据集, 不存在缺失值和异常值
# 数据可视化
import matplotlib.pyplot as plt
fig1=plt.figure(figsize=(2,2))
imgX=x_train[0]
plt.imshow(imgX)
plt.title(y_train[0])
plt.show()
# 输出格式转换
from keras.utils import to_categorical
y_train_format = to_categorical(y_train)
y_test_format= to_categorical(y_test)
print(y_train_format[5])
#####################################################################################
# 3.特征工程
# 特征转换--对数据特征值进行维度转换, 将28*28转化为1*784
feature_size=imgX.shape[0]*imgX.shape[1]
x_train_conform=x_train.reshape(x_train.shape[0], feature_size)
x_test_conform =x_test.reshape(x_test.shape[0], feature_size)
print(x_train_conform.shape)
# 特征预处理---归一化
print(x_train_conform[0])  # 归一化之前
x_train_normal = x_train_conform/255
x_test_normal= x_test_conform/255
print(x_train_normal[0])

#########################################################################################
# 4.模型训练
# 模型框架选择
from keras.models import Sequential
mlp=Sequential()
# 模型填充
from keras.layers import Dense, Activation
mlp.add(Dense(units=392, activation='sigmoid', input_dim=feature_size))
mlp.add(Dense(units=392, activation='sigmoid'))
mlp.add(Dense(units=10, activation='softmax'))
mlp.summary()
# 模型编译
mlp.compile(optimizer='adam', loss='categorical_crossentropy')
# 模型训练
mlp.fit(x_train_normal,y_train_format, epochs=10)  # 当数据集过大时候, 迭代次数不宜过大, 计算成本太大


####################################################################################
# 5.模型预测和评估
# 利用训练值进行
# 预测
import numpy as np
y_train_pre_pro = mlp.predict(x_train_normal)
y_train_pre=np.argmax(y_train_pre_pro, axis=1)
print(y_train_pre)
# 评估
from sklearn.metrics import accuracy_score
accuracy_train=accuracy_score(y_train, y_train_pre)
print(accuracy_train)
# 利用测试值进行预测和评估
# 预测
y_test_predict_pro=mlp.predict(x_test_normal)
y_test_predict = np.argmax(y_test_predict_pro, axis=1)
print(y_test_predict)
# 评估
accuracy_test=accuracy_score(y_test, y_test_predict)
print(accuracy_test)


###############################################实测环节
# 进入实际测试环节
fig2=plt.figure(figsize=(2,2))
img0=x_test[128]
plt.imshow(img0)
plt.title(y_test_predict[128])
plt.show()

数据集下载链接:

推荐下载: 直接使用内置的数据集不香吗?


                1.官网下载:
                http://yann.lecun.com/exdb/mnist/


                2.谷歌下载(内置数据集的下载方式):
                https://storage.googleapis.com/tensorflow/tf-keras-datasets/mnist.npz


                3.百度网盘下载:
                链接:https://pan.baidu.com/s/1dwZkBrbsWfLRoUG3OsY8ag 
                提取码:tt8d


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

秃头警告:赶紧睡觉

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

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

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

打赏作者

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

抵扣说明:

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

余额充值