深度學習——手寫數字識別

深度學習——手寫數字識別

圖 1

學習深度學習的朋友應該對MNIST數據集不陌生吧,相信很多人在剛開始學習深度學習的時候都會用到MNIST數據集進行書寫數字識別。本篇文章參考魚書創建一個深度網絡來進行書寫數字識別的任務。

如上圖所示,這里使用的卷積層全都是 3 × 3 3 \times 3 3×3 的小型濾波器,特點是隨著層的加深,通道數變大(卷積層的通道數從前面的層開始按順序以16、16、32、32、64、64的方式增加)。此外,如圖所示,插入了池化層,以逐漸減小中間數據的空間大小;并且,后面的全連接層中還使用了Dropout層(為了防止過擬合)。

這個網絡使用He初始值(何愷明大神的提出的)作為權重的初始值,使用Adam更新權重參數。把上述內容總結起來,這個網絡有如下特點。

  • 基于 3 × 3 3 \times 3 3×3的小型濾波器的卷積層。
  • 激活函數是 ReLU。
  • 全連接層的后面使用 Dropout 層。
  • 基于 Adam 的最優化。
  • 使用 He 初始值作為權重初始值。

權重初始化對訓練深度網絡很重要,特別是ReLU激活函數流行之后。Xavier 初始化是針對Sigmoid和Tanh設計的,Sigmoid函數和Tanh函數左右對稱,且中央附近可以視作線性函數,但ReLU的非線性特性導致前向傳播時輸出方差會變化。

而He初始化主要是為了解決ReLU激活函數在初始化時方差縮小的問題。He初始值一種專門為使用ReLu激活函數及其變體(如Leaky ReLU, PPeLU)的神經網絡層設計的權重初始化方法。它是由何愷明(Kaiming He)等人在2015年的論文《Delving Deep into Rectifiers: Surpassing Human-Level Performance on ImageNet Classification》中提出的。ReLU會把負數部分歸零,所以輸出的方差會比輸入小一半。如果每一層都這樣,深度網絡的方差會越來越小,導致梯度消失。

He初始值使用標準差為 2 n \sqrt{\frac{2}{n}} n2? ? 的高斯分布,n是輸入神經元的數量。與 Xavier 初始化相比, He 的方差更大,以補償ReLU造成的方差減半。

代碼:https://github.com/Benxiaogu/mnist

魚書全書代碼
https://github.com/qiaohaoforever/DeepLearningFromScratch

訓練結果:

函數im2col的作用是將數據展開以適合濾波器(權重)。如下圖所示,對3維的輸入數據應用此函數后,數據轉換為2維矩陣(正確地講,是把包含批數量的4維數據轉換成了2維數據)。

im2col 是 "image to column"的縮寫,翻譯過來就是“從圖像到矩陣”的意思。

使用im2col展開輸入數據之后,之后就只需將卷積層的濾波器(權重)縱向展開為1列,并計算2個矩陣的乘積即可,如下圖所示。這和全連接層的 Affine 層進行的處理基本相同。

如上圖所示,基于 im2col 方式的輸出結果是2為矩陣。因為 CNN 中數據會保存為4維數組,所以要將 2 維輸出數據轉換為合適的形狀。

函數col2im是函數im2col的逆過程

def im2col(input_data, filter_h, filter_w, stride=1, pad=0):"""Parameters:input_data:由(數據量, 通道, 高, 長)的4維數組構成的輸入數據filter_h:濾波器的高filter_w:濾波器的長stride:步幅pad:填充Returnscol:2維數組"""N, C, H, W = input_data.shapeout_h = 1 + (H + 2*pad - filter_h) // strideout_w = 1 + (W + 2*pad - filter_w) // strideimg = np.pad(input_data, [(0,0), (0,0), (pad,pad), (pad,pad)], 'constant')col = np.zeros((N, C, filter_h, filter_w, out_h, out_w))for y in range(filter_h):y_max = y + stride*out_hfor x in range(filter_w):x_max = x + stride*out_wcol[:, :, y, x, :, :] = img[:, :, y:y_max:stride, x:x_max:stride]col = col.transpose(0, 4, 5, 1, 2, 3).reshape(N*out_h*out_w, -1)return coldef col2im(col, input_shape, filter_h, filter_w, stride=1, pad=0):"""Parameters:col:2維數組input_data:由(數據量, 通道, 高, 長)的4維數組構成的輸入數據filter_h:濾波器的高filter_w:濾波器的長stride:步幅pad:填充Returns:img:由(數據量, 通道, 高, 長)的4維數組構成的輸出數據"""N, C, H, W = input_shapeout_h = (H + 2*pad - filter_h) // stride + 1out_w = (W + 2*pad - filter_w) // stride + 1col = col.reshape(N, out_h, out_w, C, filter_h, filter_w).transpose(0, 3, 4, 5, 1, 2) # reshape形狀,transpose調整維度順序img = np.zeros((N, C, H + 2*pad + filter_h - 1, W + 2*pad + filter_w - 1))for y in range(filter_h):y_max = y + stride*out_hfor x in range(filter_w):x_max = x + stride*out_wimg[:, :, y:y_max:stride, x:x_max:stride] += col[:, :, y, x, :, :]return img[:, :, pad:H + pad, pad:W + pad] # 去除填充部分

函數np.flatten()的作用是將多維數組扁平化為一維數組。np.flatten()默認按行優先進行降維,也就是將多維數組的第一行所有元素放到一位數組的前面,然后是第二行,依次類推。

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

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

相關文章

HashMap算法高級應用實戰:頻率類子數組問題的5種破解模式

本文將深入剖析5種基于HashMap的高級模式,通過原理詳解、多語言實現、性能對比和工業級應用,助您徹底掌握頻率類子數組問題。 1. 深入解析:頻率類子數組問題 1.1 問題定義與分類 頻率類子數組問題是指需要統計或查找滿足特定元素頻率條件的…

【精選】計算機畢業設計HTML5智能寵物尋找與領養系統 跨平臺寵物匹配 地圖定位找寵 領養申請審核系統源碼+論文+PPT+講解

博主介紹: ?我是阿龍,一名專注于Java技術領域的程序員,全網擁有10W粉絲。作為CSDN特邀作者、博客專家、新星計劃導師,我在計算機畢業設計開發方面積累了豐富的經驗。同時,我也是掘金、華為云、阿里云、InfoQ等平臺…

拼多多商家端 anti_content 補環境分析

聲明 本文章中所有內容僅供學習交流使用,不用于其他任何目的,抓包內容、敏感網址、數據接口等均已做脫敏處理,嚴禁用于商業用途和非法用途,否則由此產生的一切后果均與作者無關! 部分python代碼 import execjs impor…

電腦、手機長時間不關機可以嗎

電腦和手機常年處于開機狀態,只有在沒電或者系統提示更新的時候才會關機。那問題來了,電腦、手機長時間不關機到底可不可以呢?今天咱們就來好好嘮嘮。 手機長時間不關機的情況 先來說說手機。現在的智能手機功能越來越強大,我們…

「AI大數據」| 《華為:面向智能制造的工業大模型標準化研究報告》

今天給大家介紹 《華為:面向智能制造的工業大模型標準化研究報告》,這是一份由中國電子技術標準化研究院聯合華為等多家企業編寫的權威報告,聚焦工業大模型在智能制造領域的標準化發展。報告詳細分析了工業大模型的技術架構、應用場景、標準化現狀與挑戰…

Dinky1.2.3基于Kubernetes Application模式提交Flink作業

前言 Dinky 是一個開箱即用、易擴展,以 Apache Flink 為基礎,連接 OLAP 和數據湖等眾多框架的一站式實時計算平臺,致力于流批一體和湖倉一體的探索與實踐。 致力于簡化Flink任務開發,提升Flink任務運維能力,降低Flink…

【軟考高級架構設計師】——2025年上半年軟考真題(回憶版)

目錄 一、綜合知識1.1、計算機基礎與操作系統(15道單選)1.2、軟件工程與架構(16道單選)1.3、數據與網絡(8道單選)1.4、數學與邏輯(4道單選)1.5、其他(27道單選)1.6、英文題(質量屬性)(5道單選)二、案例分析2.1、大模型訓練系統(必選題)2.2、醫院知識圖譜(可選…

哈夫曼樹Python實現

哈夫曼樹構建原則: .統計頻率:對待編碼字符(或數據塊)的頻率進行統計。.初始化森林:將每個字符視為一棵只有根節點的二叉樹,權值為頻率。.合并樹:重復以下操作,直到只剩一棵樹&…

Dockerfile的學習與實踐

Dockerfile通過一系列的命令和參數,構建自定義鏡像。一般步驟如下: 一. 常用命令說明 基礎命令具體命令描述例子FROMFROM[基礎鏡像:版本號]基于指定的基礎鏡像構建自定義鏡像FROM eclipse-temurin:17-jdk-alpineRUNRUN構建容器需要運行的命令&#xff0…

【三大前端語言之一】靜態網頁語言:HTML詳解

你知道你在瀏覽器中所看到的每一個按鈕,每一個框,都是怎么創造出來的嗎?它們并非魔法,而是由一種被稱為HTML的語言精心構建的骨架。作為前端世界的三大基石之一(HTML、CSS、JavaScript),HTML是萬…

04、誰發明了深度學習的方法,是怎么發明的?

深度學習的發展是多位研究者長期探索的結果,其核心方法的形成并非由單一人物 “發明”,而是歷經數十年理論積累與技術突破的產物。以下從關鍵人物、核心技術突破及歷史背景三個維度,梳理深度學習方法的起源與發展脈絡: 一、深度學習的奠基者與關鍵貢獻者 1. Geoffrey Hin…

Jmeter ServerAgent在arm環境啟動報錯no libsigar-aarch64-linux.so in java.library.path

使用Jmeter壓測的時候,用ServerAgent監測arm服務器的性能指標,在啟動ServerAgent時,報錯了:no libsigar-aarch64-linux.so in java.library.path 解決方案: 下載libsigar-aarch64-linux.so文件,放置在Serv…

AJAX攔截器失效排查指南:當你的beforeSend有效但error/complete沉默時

問題現象 開發者常遇到這樣的場景: $.ajaxSetup({beforeSend: () > console.log("? 觸發"), // 正常執行error: () > console.log("? 未觸發"), // 靜默失效complete: () > console.log("? 未觸發") // 同樣沉默 })…

【模型微調】負樣本選擇

1.核心設計理念 非對稱檢索任務(例如,用一個簡短的問題去文檔庫里查找答案)的一個核心挑戰是查詢(query)和文檔(passage)在文本特征上的巨大差異。以往的研究發現,為查詢和文檔提供…

下載安裝redis

有任何問題,都可以私信博主,共同探討學習。 正文開始 一、下載安裝redis一、啟動redis總結 一、下載安裝redis redis官方下載地址是github,有條件的同學可以自行搜索下載。針對部分網速不太好的同學,可以通過網盤獲取&#xff0c…

flutter 項目配置Gradle下載代理

如圖, 在Android Studio中配置代理是不生效的。 需要在flutter sdk的Gradle中去配置代理

世冠科技亮相TMC,以國產MBD工具鏈賦能汽車電控系統開發新未來

2025年6月12日至13日,第十七屆國際汽車動力系統技術年會(TMC2025)在南通國際會展中心盛大召開。作為全球汽車動力系統領域規模最大、規格最高、內容最前沿的標桿性國際盛會,匯聚了來自全球整車企業、核心零部件供應商、頂尖科研機…

將本地項目與遠程 Git 倉庫關聯的完整步驟

將本地項目與遠程 Git 倉庫關聯的完整步驟 現在的情景是:本地文件項目已經寫好了,亦或者遠程倉庫已經建好了,需要與本地項目關聯起來 以下是詳細的操作流程,我會用清晰的步驟說明如何將你的本地項目與遠程 Git 倉庫關聯&#xf…

3DS 轉換為 STP 全攻略:迪威模型網在線轉換詳解

在三維模型創作與應用的多元場景中,不同格式的文件承擔著獨特的角色。3DS(3D Studio)格式是 Autodesk 3ds Max 早期廣泛使用的文件格式,常用于游戲開發、影視特效制作等領域,能夠存儲模型的幾何形狀、材質、動畫等信息…

Linux下iptables和firewalld詳解

Linux下iptables和firewalld詳解 Linux下iptables和firewalld簡述Iptables四表五鏈策略與規則鏈命令參數Firewalld終端管理工具圖形管理工具服務的訪問控制列表Linux下iptables和firewalld 簡述 ? 保障數據的安全性是繼保障數據的可用性之后最為重要的一項工作。防火墻作為公…