MLP實戰二:MLP 實現圖像數字多分類

任務

實戰(二):MLP 實現圖像多分類
基于 mnist 數據集,建立 mlp 模型,實現 0-9 數字的十分類 task:
1、實現 mnist 數據載入,可視化圖形數字;
2、完成數據預處理:圖像數據維度轉換與歸一化、輸出結果格式轉換;
3、計算模型在預測數據集的準確率;
4、模型結構:兩層隱藏層,每層有 392 個神經元

參考資料

38.42 實戰(二)_嗶哩嗶哩_bilibili

?1、載入mnist 數據,可視化圖形數字

載入數據

#load the mnist data
from tensorflow.keras.datasets import mnist
(X_train, y_train),(X_test, y_test) = mnist.load_data()
print(type(X_train), X_train.shape) 
#<class 'numpy.ndarray'> (60000, 28, 28),訓練樣本有 60000個,每個都是 28 * 28 像素組成的 Array

可視化部分數據

#可視化部分數據
img1 = X_train[0] #取第一個數據
%matplotlib inline
from matplotlib import pyplot as plt
fig1 = plt.figure(figsize=(3,3))
plt.imshow(img1)
plt.title(y_train[0])# 標簽作為 title
plt.show()

?2、數據預處理

圖像數據維度轉換與歸一化

img1.shape# (28,28), 可以看出是  28 行 28 列
#需要轉換成 784列的新的數組
#format the input data
feature_size = img1.shape[0] * img1.shape[1] # 行數*列數
print(feature_size)# 784
#把原來的數據進行 reshape
X_train_format = X_train.reshape(X_train.shape[0], feature_size)#第一個參數是樣本數量
print(X_train_format.shape)# (60000, 784), 60000個樣本, 784列X_test_format = X_test.reshape(X_test.shape[0], feature_size)#第一個參數是樣本數量
print(X_test_format.shape)#(10000, 784)

#歸一化:圖像數據是 0-255,區間太大,需要歸一化到 0-1之間
#normalize the input data
X_train_normal = X_train_format/255
X_test_normal = X_test_format/255
print(X_train_format[0]) #原數據

print(X_train_normal[0]) #歸一化后的數據

?輸出結果格式轉換

#數據預處理:輸出結果也需要進行轉換,轉換成 0001這樣的標簽
#format the output data(labels)
from tensorflow.keras.utils import to_categorical
y_train_format = to_categorical(y_train)
y_test_format = to_categorical(y_test)
print(y_train[0])# 5, 第一副圖像是 5
print(y_train_format[0])#[0. 0. 0. 0. 0. 1. 0. 0. 0. 0.] # 第 5 個是 1

3、計算模型在預測數據集的準確率

創建 MLP 模型

# set up the model
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Activationmlp =Sequential()
mlp.add(Dense(units = 392, activation = 'sigmoid', input_dim = feature_size))
#第二層有 392 個神經元,input_dim 為一開始的輸入數據
mlp.add(Dense(units = 392, activation = 'sigmoid'))# 第三層
mlp.add(Dense(units = 10, activation = 'softmax')) # 輸出層為0-9 10個數字
mlp.summary()

配置模型?

#config the model
mlp.compile(loss = 'categorical_crossentropy' , optimizer = 'adam')
#categorial_crossentropy: 這個是用于多分類的損失函數; optimizer:優化方法

?訓練模型

#train the model
mlp.fit(X_train_normal, y_train_format, epochs = 10)

評估模型?

訓練集

#預測訓練集數據
y_train_predict = mlp.predict_classes(X_train_normal)
print(y_train_predict)

#計算對訓練集預測的準確率
from sklearn.metrics import accuracy_score
accuracy_train = accuracy_score(y_train, y_train_predict)
print(accuracy_train)#0.9964833333333334

測試集

#看下 測試集 的準確率
y_test_predict = mlp.predict_classes(X_test_normal)
accuracy_test = accuracy_score(y_test, y_test_predict)
print(accuracy_test)#0.981, 比較高,說明模型對圖片的預測還是比較準確的

展示出圖形,看預測結果與實際是否相符

#選幾幅圖展示出來,看看預測結果是否一樣
img2 = X_test[100] # 隨便選擇,這里選擇第 11 幅圖
fig2 = plt.figure(figsize = (3,3))
plt.imshow(img2)
plt.title(y_test_predict[100])
plt.show()#展示的是測試集第 11 張圖片的圖形 以及 預測的標簽

4、圖像數字多分類實戰總結

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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/83714.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/83714.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/83714.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

BUUCTF[HCTF 2018]WarmUp 1題解

BUUCTF[HCTF 2018]WarmUp 1題解 分析解題過程代碼審計主體函數CHECK函數&#xff1a; 構造payload 總結 分析 啟動靶機&#xff0c;進入網址&#xff0c;是一張滑稽的表情包&#xff1a; 程序化F12查看源碼&#xff1a; 發現注釋內容&#xff0c;訪問 url:/source.php得到…

大陸4D毫米波雷達ARS548調試

本文介紹了大陸ARS548毫米波雷達的調試與測試流程&#xff0c;主要包括以下內容&#xff1a; 設備參數&#xff1a;最大檢測距離301m&#xff08;可調93-1514m&#xff09;&#xff0c;支持gPTP時間同步。 接線調試&#xff1a; Windows需使用USB-RJ45轉換器 Linux可直接連接網…

TDengine 的 AI 應用實戰——運維異常檢測

作者&#xff1a; derekchen Demo數據集準備 我們使用公開的 NAB數據集 里亞馬遜 AWS 東海岸數據中心一次 API 網關故障中&#xff0c;某個服務器上的 CPU 使用率數據。數據的頻率為 5min&#xff0c;單位為占用率。由于 API 網關的故障&#xff0c;會導致服務器上的相關應用…

并發編程 - go版

1.并發編程基礎概念 進程和線程 A. 進程是程序在操作系統中的一次執行過程&#xff0c;系統進行資源分配和調度的一個獨立單位。B. 線程是進程的一個執行實體,是CPU調度和分派的基本單位,它是比進程更小的能獨立運行的基本單位。C.一個進程可以創建和撤銷多個線程;同一個進程中…

《一生一芯》數字實驗三:加法器與ALU

1. 實驗目標 設計一個能實現如下功能的4位帶符號位的 補碼 ALU&#xff1a; Table 4 ALU 功能列表 ? 功能選擇 功能 操作 000 加法 AB 001 減法 A-B 010 取反 Not A 011 與 A and B 100 或 A or B 101 異或 A xor B 110 比較大小 If A<B then out1…

解讀《網絡安全法》最新修訂,把握網絡安全新趨勢

《網絡安全法》自2017年施行以來&#xff0c;在維護網絡空間安全方面發揮了重要作用。但隨著網絡環境的日益復雜&#xff0c;網絡攻擊、數據泄露等事件頻發&#xff0c;現行法律已難以完全適應新的風險挑戰。 2025年3月28日&#xff0c;國家網信辦會同相關部門起草了《網絡安全…

Java并發編程實戰 Day 10:原子操作類詳解

【Java并發編程實戰 Day 10】原子操作類詳解 開篇 這是“Java并發編程實戰”系列的第10天&#xff0c;我們將深入探討原子操作類的核心技術——CAS原理、ABA問題以及原子類的實現機制。通過理論結合代碼實踐的方式&#xff0c;幫助讀者理解并掌握如何在實際工作中高效使用原子…

瀚文機械鍵盤固件開發詳解:HWKeyboard.h文件解析與應用

【手把手教程】從零開始的機械鍵盤固件開發&#xff1a;HWKeyboard.h詳解 前言 大家好&#xff0c;我是鍵盤DIY愛好者Despacito0o&#xff01;今天想和大家分享我開發的機械鍵盤固件核心頭文件HWKeyboard.h的設計思路和技術要點。這個項目是我多年來對鍵盤固件研究的心血結晶…

2048游戲的技術實現分析-完全Java和Processing版

目錄 簡介Processing庫基礎項目構建指南項目結構核心數據結構游戲核心機制圖形界面實現性能優化代碼詳解設計模式分析測試策略總結與展望簡介 2048是一款由Gabriele Cirulli開發的經典益智游戲。本文將深入分析其Java實現版本的技術細節。該實現使用了Processing庫來創建圖形界…

Spring Boot + Elasticsearch + HBase 構建海量數據搜索系統

Spring Boot Elasticsearch HBase 構建海量數據搜索系統 &#x1f4d6; 目錄 1. 系統需求分析2. 系統架構設計3. Elasticsearch 與 HBase 集成方案4. Spring Boot 項目實現5. 大規模搜索系統最佳實踐 項目概述 本文檔提供了基于 Spring Boot、Elasticsearch 和 HBase 構建…

【iOS】YYModel源碼解析

YYModel源碼解析 文章目錄 YYModel源碼解析前言YYModel性能優勢YYModel簡介YYClassInfo解析YYClassIvarInfo && objc_ivarYYClassMethodInfo && objc_methodYYClassPropertyInfo && property_tYYClassInfo && objc_class YYClassInfo的初始化細…

宇樹科技更名“股份有限公司”深度解析:機器人企業IPO前奏與資本化路徑

從技術落地到資本躍遷&#xff0c;拆解股改背后的上市邏輯與行業啟示 核心事件&#xff1a;股改釋放的上市信號 2025年5月28日&#xff0c;杭州宇樹科技有限公司正式更名“杭州宇樹科技股份有限公司”&#xff0c;市場主體類型變更為“股份有限公司”。盡管官方稱為常規運營調…

Android Native 內存泄漏檢測全解析:從原理到工具的深度實踐

引言 Android應用的內存泄漏不僅發生在Java/Kotlin層&#xff0c;Native&#xff08;C/C&#xff09;層的泄漏同樣普遍且隱蔽。由于Native內存不受Java虛擬機&#xff08;JVM&#xff09;管理&#xff0c;泄漏的內存無法通過GC自動回收&#xff0c;長期積累會導致應用內存占用…

Vortex GPGPU的github流程跑通與功能模塊波形探索(四)

文章目錄 前言一、demo的輸入文件二、trace_csv三、2個值得注意的點3.1 csv指令表格里面的tmask&#xff1f;3.2 rtlsim和simx的log文件&#xff1f; 總結 前言 跟著前面那篇最后留下的幾個問題接著把輸出波形文件和csv文件的輸入、輸出搞明白&#xff01; 一、demo的輸入文件…

UnityPSD文件轉UI插件Psd2UnityuGUIPro3.4.0u2017.4.2介紹:Unity UI設計的高效助手

UnityPSD文件轉UI插件Psd2UnityuGUIPro3.4.0u2017.4.2介紹&#xff1a;Unity UI設計的高效助手 【下載地址】UnityPSD文件轉UI插件Psd2UnityuGUIPro3.4.0u2017.4.2介紹 這款開源插件將PSD文件無縫轉換為Unity的UI元素&#xff0c;極大提升開發效率。它支持一鍵轉換&#xff0c;…

力扣100題之128. 最長連續序列

方法1 使用了hash 方法思路 使用哈希集合&#xff1a;首先將數組中的所有數字存入一個哈希集合中&#xff0c;這樣可以在 O(1) 時間內檢查某個數字是否存在。 尋找連續序列&#xff1a;遍歷數組中的每一個數字&#xff0c;對于每一個數字&#xff0c; 檢查它是否是某個連續序列…

Java爬蟲技術詳解:原理、實現與優勢

一、什么是網絡爬蟲&#xff1f; 網絡爬蟲&#xff08;Web Crawler&#xff09;&#xff0c;又稱網絡蜘蛛或網絡機器人&#xff0c;是一種自動化程序&#xff0c;能夠按照一定的規則自動瀏覽和抓取互聯網上的信息。爬蟲技術是大數據時代獲取網絡數據的重要手段&#xff0c;廣泛…

神經網絡與深度學習 網絡優化與正則化

1.網絡優化存在的難點 &#xff08;1&#xff09;結構差異大&#xff1a;沒有通用的優化算法&#xff1b;超參數多 &#xff08;2&#xff09;非凸優化問題&#xff1a;參數初始化&#xff0c;逃離局部最優 &#xff08;3&#xff09;梯度消失&#xff08;爆炸&#xff09; …

【匯編逆向系列】二、函數調用包含單個參數之整型-ECX寄存器,LEA指令

目錄 一. 匯編源碼 二. 匯編分析 1. ECX寄存器 2. 棧位置計算? 3. 特殊指令深度解析 三、 匯編轉化 一. 匯編源碼 single_int_param:0000000000000040: 89 4C 24 08 mov dword ptr [rsp8],ecx0000000000000044: 57 push rdi0000…

Linux進程替換以及exec六大函數運用

文章目錄 1.進程替換2.替換過程3.替換函數exec3.1命名解釋 4.細說6個exe函數execl函數execvexeclp、execvpexecle、execve 1.進程替換 fork&#xff08;&#xff09;函數在創建子進程后&#xff0c;子進程如果想要執行一個新的程序&#xff0c;就可以使用進程的程序替換來完成…