深度學習之多層感知器(MLP)之經典mnist數字識別
创始人
2025-05-29 00:51:02
0

目录

  • 前言
  • 簡介
  • 思考與推導
  • 實戰
  • 總結

前言

在上一篇文章中用mlp解决了一个好壞質檢二分類问题,这次我们依然用多層感知器mlp来解决經典mnist數字識別


回顧一下前文,但是具體理論還是看前文深度學習之多層感知器(MLP)

簡介

多层感知器(MLP,Multilayer Perceptron)是一种前馈人工神经网络模型,其将输入的多个数据集映射到单一的输出的数据集上。

在这里插入图片描述

思考與推導

如果学过生物的话,应该都学过人的神经元结构,其中有两个很重要的部分(树突和轴突末端)

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
当人看到图片时,神经元间就会进行一些信息传递进而判断出图片类别。所以当我们模仿人体神经元时,可以想象将神经元信号数值化

在这里插入图片描述
即是说给通过输入数据,再经过相关公式,最后生成一个新的数值信号。看到这儿,是不是感觉和逻辑回归有一些相似之处,那就再回顾一下逻辑回归模型框架

在这里插入图片描述

可以看到左边是我们的输入数据,中间是我们的公式,右边就是我们求得的概率了。
虽然有些相似,但人的神经元有一个不同的点就是它并不是一个单一的神经元,也可以理解成它并不是一个单一的逻辑回归结构,而是由很多个神经元组成的神经网络。那么我们能把逻辑回归组成一个网络吗?

在这里插入图片描述

这里我们可以这样理解,从输入神经元开始到第一个隐含神经元这样一个计算过程,是通过逻辑回归计算的,然后第一个隐含神经元和第二个隐含神经元间也是通过逻辑回归计算的(这里第一个隐含神经元的相关数据可以看作是新的输入),同理,第二个隐含神经元和输出神经元间也是通过逻辑回归计算的。

还是一样,来看一个简化的MLP模型结构

在这里插入图片描述

来回忆一下逻辑回归模型的一些数学公式

在这里插入图片描述

这里z可以是x乘以θ

那这个简化的结构的y怎么计算呢?

我们是先计算a的值然后再计算y的值(这里x0是常数项)
在这里插入图片描述
这里就和前面的z=xθ相同了

在这里插入图片描述

話不多説直接進入實戰

實戰

基於mnist數據集,建立mlp模型,實現0-9數字的十分類task:

  1. 實現mnist數據載入,可視化圖形數字
  2. 完成數據預處理:圖像數據維度轉換與歸一化、輸出結果格式轉換
  3. 計算模型在預測數據集的準確率
  4. 模型結構:兩層隱藏層,每層有392個神經元
# load the mnist data
from keras.datasets import mnist
(X_train, y_train), (X_test, y_test) = mnist.load_data()

加載數據,keras為我們提供了這個經典數據集

在这里插入图片描述

# visualize the data
img1 = X_train[0]
from matplotlib import pyplot as plt
fig1 = plt.figure(figsize=(3,3))
plt.imshow(img1)
plt.title(y_train[0])
plt.show()

隨便找張圖可視化看一下是什麽
在这里插入图片描述
可以看的出來是數字5

#fromat the input data
feature_size = img1.shape[0] * img1.shape[1]
X_train_format = X_train.reshape(X_train.shape[0],feature_size)
X_test_format = X_test.reshape(X_test.shape[0],feature_size)print(X_train_format.shape)

格式化一下
在这里插入图片描述

# normalize the input data
X_train_normal = X_train_format/255
X_test_normal = X_test_format/255print(X_train_normal[0])

歸一化
在这里插入图片描述

# format the output data(labels)
from keras.utils import to_categorical
y_train_format = to_categorical(y_train)
y_test_format = to_categorical(y_test)print(y_train[0]) # 5
print(y_train_format[0]) # 在下標為5 的地方為1

轉爲one-hot編碼(獨熱編碼)

独热编码即 One-Hot 编码,又称一位有效编码,其方法是使用N位状态寄存器来对N个状态进行编码,每个状态都有它独立的寄存器位,并且在任意时候,其中只有一位有效。
這裏不詳細説明,看注釋應該也看得懂這個編碼是什麽效果

在这里插入图片描述

在这里插入图片描述
建一個這樣的模型

# set up the model
from keras.models import Sequential
from keras.layers import Dense,Activationmlp = Sequential()
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()

設置模型並summary()看一下模型結構,第一層是需要告訴input_dim的,後面幾層是根據上一層的所以就不用,激活函數用的sigmoid

在这里插入图片描述
可以看出有兩個隱藏層,而且訓練數據量也挺大的,會挺耗時

# comfigure the model
mlp.compile(loss='categorical_crossentropy',optimizer='adam')

配置模型

mlp.fit(X_train_normal,y_train_format,epochs=10)

模型訓練

在这里插入图片描述
迭代10次大概用了一分鐘

评估模型

y_train_predict = np.argmax(mlp.predict(X_train_normal), 1) # np.argmax()獲取對應整數, [5 0 4 ... 5 6 8]
print(y_train_predict)

在这里插入图片描述

from sklearn.metrics import accuracy_score
accuracy_train = accuracy_score(y_train,y_train_predict)
print(accuracy_train)

看一下準確率,發現還不錯

在这里插入图片描述

y_test_predict = np.argmax(mlp.predict(X_test_normal), 1)
accuracy_test = accuracy_score(y_test,y_test_predict)
print(accuracy_test)

看一下測試數據準確率,也是還可以,沒有過擬合問題

在这里插入图片描述

img2 = X_test[123]
fig1 = plt.figure(figsize=(3,3))
plt.imshow(img2)
plt.title(y_test_predict[123])
plt.show()

可視化看一下,標題是預測數字,圖片是本來的圖片

在这里插入图片描述
可以看出準確預測出是6了,也可以用別的數字試試看結果都預測的還可以

總結

圖像數字多分類實戰summary:

  1. 通過mlp模型,實現了基於圖像數據的數字自動識別分類
  2. 完成了圖像的數字化處理與可視化
  3. 對mlp模型的輸入、輸出數據格式有了更深的認識,完成了數據預處理與格式轉換
  4. 建立了結構更爲複雜的mlp模型
  5. mnist數據集地址:http://yann.lecun.com/exdb/mnist/

這就是本次學習深度學習之多層感知器(MLP)的筆記
附上本次實戰的數據集和源碼:
鏈接:https://github.com/fbozhang/python/tree/master/jupyter

相关内容

热门资讯

河北盐山:旅游赋能乡村振兴 河... 本文转自:人民网-河北频道在河北省盐山县薛堂村的蔬菜大棚内,一名游客正在桃树大棚内进行采摘。殷实摄金...
原创 开... #开心一刻:哥们去日本旅游我给他个U盘告诉他给我带点土特产…… 咱就是说,有个哥们要去日本旅游,那...
原创 教... #教你家常萝卜炒粉条做法,掌握这2步,萝卜口感清脆粉条滑口好吃 在平凡的餐桌上,总有几道家常菜能慰...
暑假旅游景点的工种职责是什么? 暑假一到,许多年轻人选择前往旅游景点打工,既能赚取一些零花钱,又能亲身体验热闹的氛围。作为网站站长,...
假期到黄山2日游多少钱,黄山两... 假期到黄山2日游多少钱,黄山两天一晚费用和旅游路线 黄山,这座坐落于安徽南部黄山市境内的名山,宛如大...
当酒店开始造梦!五一实探爆款魔... 当你的酒店还在算差几条好评才能到4.8分的时候,文华东方已经把客房空间变成了会生长的故事容器,帮客人...
原创 克... 北京时间6月7日,山东泰山队外援克雷桑更新了社交,晒出了他的早餐照,通过克雷桑的早餐照能够看到,以水...
《10分钟搞定酱香鸡蛋拌面!打... 当加班狗遇上厨房杀手 凌晨1点的写字楼里,我对着电脑屏幕揉揉酸痛的颈椎,突然被胃部传来"咕噜噜"的...
原创 灌... #灌好的香肠,别再直接晒了!多加这1步,香肠超美味,吃着还更香 在民间饮食的智慧长河中,香肠的制作...
原创 早... #早餐就爱这碗蔬菜菌汤,5分钟1锅,不放任何调料,汤鲜味美好滋补 在清晨的忙碌与期待中,我总钟情于...
原创 桌... #桌上有这道菜,不吃光盘不离席,越吃越入味,下酒最合适 在生活的烟火中,总有那么几道菜,一上桌便如...
去黄山四日游日程开支清单,计划... 去黄山四日游日程开支清单,计划到黄山4天线路怎么走? 黄山,宛如镶嵌在华夏大地上的一颗璀璨明珠,坐落...
新加坡媒体:美国“红线”VS中... 来源:环球时报新加坡《亚洲旅游周刊》6月5日文章,原题:美国的繁文缛节vs中国的红地毯 全球旅游舞台...
黄山四天当地导游报团行程,黄山... 黄山四天当地导游报团行程,黄山随团4日游费用及开支 黄山,这座屹立于安徽省南部黄山市境内的名山,宛如...
黄山旅游五天费用需多少,黄山5... 黄山旅游五天费用需多少,黄山5天4晚旅游线路怎么收费? 黄山,这座屹立于安徽省南部黄山市境内的名山,...
暑假游宜昌三峡三天两晚需要多少... 最近,我有幸和朋友们一起踏上了前往宜昌三峡的旅程。宜昌三峡,那山清水秀、景色宜人的地方,一直是我向往...
黄山4日游自由行旅游攻略,黄山... 黄山4日游自由行旅游攻略,黄山四天自助游旅游攻略 黄山,宛如镶嵌在华夏大地上的一颗璀璨明珠,坐落于安...
黄山旅游四天攻略及费用,黄山跟... 黄山旅游四天攻略及费用,黄山跟团4日游旅游报价详情! 黄山,这座屹立于安徽省南部黄山市境内的名山,宛...
原创 拌... #拌饺子馅时,先放油还是盐?大厨说漏嘴:难怪不入味腥味还重! 在民间烟火的厨房里,饺子宛如一颗璀璨...