一文讀懂現代卷積神經網絡—深度卷積神經網絡(AlexNet)

目錄

深度卷積神經網絡(AlexNet)是什么?

一、AlexNet 的核心創新

1.?深度架構

2.?ReLU 激活函數

3.?數據增強

4.?Dropout 正則化

5.?GPU 并行計算

6.?局部響應歸一化(LRN)

二、AlexNet 的網絡結構

三、AlexNet 的革命性影響

AlexNet的架構圖

深度卷積神經網絡(AlexNet)和卷積神經網絡(CNN)的區別

一、歷史背景:從淺層到深度

二、架構設計:從簡單到復雜

三、訓練技術:從基礎到創新

四、應用效果:從實驗到實用

完整代碼

實驗結果


深度卷積神經網絡(AlexNet)是什么?

AlexNet?是 2012 年由 Alex Krizhevsky、Ilya Sutskever 和 Geoffrey Hinton 提出的深度卷積神經網絡(DCNN),它在當年的 ImageNet 大規模視覺識別挑戰賽(ILSVRC)中以15.3% 的 Top-5 錯誤率奪冠,大幅超越第二名(26.2%),標志著深度學習在計算機視覺領域的突破性成功,并引發了 AI 領域的革命。以下是其核心特點、架構和影響的詳解:

一、AlexNet 的核心創新

1.?深度架構
  • 8 層網絡:5 個卷積層 + 3 個全連接層,總參數約 6000 萬(當時史無前例)。
  • 突破傳統淺層網絡限制:此前 CNN(如 LeNet-5)僅 7 層,AlexNet 證明深度對模型能力的關鍵作用。
2.?ReLU 激活函數
  • 首次大規模使用ReLU(Rectified Linear Unit)f(x) = \max(0, x)解決了 Sigmoid/Tanh 的梯度消失問題,訓練速度提升 6 倍。
3.?數據增強
  • 通過隨機裁剪、水平翻轉、顏色擾動等方法擴充訓練數據,顯著減少過擬合。 示例:從原圖隨機裁剪 224×224 區域,每個圖像生成數百萬變體。
4.?Dropout 正則化
  • 在全連接層引入Dropout(隨機丟棄 50% 神經元),防止過擬合,提升泛化能力。
  • 該技術已成為深度學習標配。
5.?GPU 并行計算
  • 利用雙 NVIDIA GTX 580 GPU并行訓練(每個 GPU 負責部分層),將訓練時間從數周縮短至數天。
  • 開創了深度學習與 GPU 硬件協同發展的模式。
6.?局部響應歸一化(LRN)
  • 通過相鄰通道間的競爭機制增強泛化能力(后續被 Batch Normalization 替代)。

二、AlexNet 的網絡結構

輸入層 (224×224×3)↓
卷積層1: 96個11×11卷積核,步長4 → ReLU → LRN → 最大匯聚(3×3,步長2)↓
卷積層2: 256個5×5卷積核,步長1 → ReLU → LRN → 最大匯聚(3×3,步長2)↓
卷積層3: 384個3×3卷積核,步長1 → ReLU↓
卷積層4: 384個3×3卷積核,步長1 → ReLU↓
卷積層5: 256個3×3卷積核,步長1 → ReLU → 最大匯聚(3×3,步長2)↓
全連接層1: 4096神經元 → ReLU → Dropout(0.5)↓
全連接層2: 4096神經元 → ReLU → Dropout(0.5)↓
全連接層3: 1000神經元 (對應ImageNet的1000個類別)↓
Softmax層: 輸出類別概率分布
?

關鍵點

  • 雙 GPU 設計:前兩層卷積和全連接層在兩個 GPU 上并行計算(如圖)。
  • 特征圖尺寸變化:通過卷積和匯聚逐步減小空間尺寸(224→55→27→13→6),同時增加通道數(3→96→256→384→256)

三、AlexNet 的革命性影響

  1. 開啟深度學習時代: AlexNet 的成功證明了深度模型在大規模數據上的有效性,引發學術界和工業界對深度學習的廣泛關注。

  2. 推動硬件發展: 凸顯 GPU 在深度學習中的核心地位,促使 NVIDIA 等公司加大對 AI 芯片的研發投入。

  3. 改變計算機視覺研究范式: 從手工特征(如 SIFT、HOG)轉向端到端的深度神經網絡學習,后續 VGG、ResNet 等模型均基于此演進。

  4. 拓展應用邊界: 為目標檢測(R-CNN)、語義分割(FCN)、人臉識別等任務奠定基礎,推動 AI 在醫療、自動駕駛等領域的應用。

AlexNet的架構圖

深度卷積神經網絡(AlexNet)和卷積神經網絡(CNN)的區別

歷史背景、架構設計、訓練技術、應用效果四個維度對比 AlexNet 與傳統 CNN 的核心區別:

一、歷史背景:從淺層到深度

維度傳統 CNN(如 LeNet-5, 1998)AlexNet(2012)
誕生時間1990 年代(早于深度學習熱潮)深度學習復興時期(ImageNet 競賽后)
數據規模小規模數據集(如 MNIST,6 萬張 28×28 手寫數字)大規模數據集(ImageNet,1400 萬張 224×224 圖像)
硬件支持CPU 訓練(計算資源有限)GPU 并行訓練(雙 GTX 580,算力提升 100 倍)
應用領域簡單任務(如手寫數字識別、OCR)復雜場景(如 ImageNet 1000 類分類)

二、架構設計:從簡單到復雜

維度傳統 CNN(如 LeNet-5)AlexNet
網絡深度淺(通常≤10 層)深(8 層,首次突破 1000 萬參數)
卷積核尺寸大卷積核(如 5×5、7×7)混合尺寸(11×11、5×5、3×3)
通道數少(如 LeNet 第一層 6 個通道)多(AlexNet 第一層 96 個通道)
特征圖尺寸小(如 LeNet 最終特征圖 16×16)大(AlexNet 最終特征圖 6×6×256)
池化策略平均池化為主最大池化為主
網絡結構簡單串聯復雜分支(雙 GPU 并行計算)

三、訓練技術:從基礎到創新

維度傳統 CNNAlexNet
激活函數Sigmoid/Tanh(易梯度消失)ReLU(解決梯度消失,加速訓練 6 倍)
正則化少量數據增強,無 Dropout大規模數據增強(裁剪、翻轉、顏色擾動)+ Dropout(0.5)
歸一化局部響應歸一化(LRN)
優化器隨機梯度下降(SGD),低學習率SGD + 動量(0.9),自適應學習率調整
訓練時間數小時至數天數天至數周(依賴 GPU 并行)

四、應用效果:從實驗到實用

維度傳統 CNNAlexNet
準確率在小規模數據集上表現良好(如 MNIST 99%)在大規模數據集上突破性表現(ImageNet Top-5 錯誤率 15.3% vs 傳統方法 26.2%)
泛化能力對簡單任務有效,復雜場景易過擬合通過 Dropout 和數據增強,顯著提升泛化能力
計算效率CPU 可承受,但處理大圖緩慢依賴 GPU,處理速度提升 100 倍
模型影響學術研究為主,實際應用受限引發工業界關注,推動深度學習商業化

完整代碼

"""
文件名: 7.1  深度卷積神經網絡(AlexNet)
作者: 墨塵
日期: 2025/7/13
項目名: dl_env
備注: 
"""import torch
from torch import nn
from d2l import torch as d2l
# 手動顯示圖像(關鍵)
import matplotlib.pyplot as plt
import matplotlib.text as text  # 新增:用于修改文本繪制# -------------------------- 核心解決方案:替換減號 --------------------------
# 定義替換函數:將Unicode減號U+2212替換為普通減號-
def replace_minus(s):if isinstance(s, str):return s.replace('\u2212', '-')return s# 安全重寫Text類的set_text方法,避免super()錯誤
original_set_text = text.Text.set_text  # 保存原始方法
def new_set_text(self, s):s = replace_minus(s)  # 替換減號return original_set_text(self, s)  # 調用原始方法
text.Text.set_text = new_set_text  # 應用新方法
# -------------------------------------------------------------------------# -------------------------- 字體配置(關鍵修改)--------------------------
# 解決中文顯示和 Unicode 減號(U+2212)顯示問題
plt.rcParams["font.family"] = ["SimHei"]
plt.rcParams["text.usetex"] = True  # 使用Latex渲染
plt.rcParams["axes.unicode_minus"] = True  # 正確顯示負號
plt.rcParams["mathtext.fontset"] = "cm"    # 確保數學符號(如減號)正常顯示
d2l.plt.rcParams.update(plt.rcParams)      # 讓 d2l 繪圖工具繼承字體配置
# -------------------------------------------------------------------------if __name__ == '__main__':# 容量控制和預處理net = nn.Sequential(# 這里使用一個11*11的更大窗口來捕捉對象。# 同時,步幅為4,以減少輸出的高度和寬度。# 另外,輸出通道的數目遠大于LeNetnn.Conv2d(1, 96, kernel_size=11, stride=4, padding=1), nn.ReLU(),nn.MaxPool2d(kernel_size=3, stride=2),# 減小卷積窗口,使用填充為2來使得輸入與輸出的高和寬一致,且增大輸出通道數nn.Conv2d(96, 256, kernel_size=5, padding=2), nn.ReLU(),nn.MaxPool2d(kernel_size=3, stride=2),# 使用三個連續的卷積層和較小的卷積窗口。# 除了最后的卷積層,輸出通道的數量進一步增加。# 在前兩個卷積層之后,匯聚層不用于減少輸入的高度和寬度nn.Conv2d(256, 384, kernel_size=3, padding=1), nn.ReLU(),nn.Conv2d(384, 384, kernel_size=3, padding=1), nn.ReLU(),nn.Conv2d(384, 256, kernel_size=3, padding=1), nn.ReLU(),nn.MaxPool2d(kernel_size=3, stride=2),nn.Flatten(),# 這里,全連接層的輸出數量是LeNet中的好幾倍。使用dropout層來減輕過擬合nn.Linear(6400, 4096), nn.ReLU(),nn.Dropout(p=0.5),nn.Linear(4096, 4096), nn.ReLU(),nn.Dropout(p=0.5),# 最后是輸出層。由于這里使用Fashion-MNIST,所以用類別數為10,而非論文中的1000nn.Linear(4096, 10))X = torch.randn(1, 1, 224, 224)for layer in net:X = layer(X)print(layer.__class__.__name__, 'output shape:\t', X.shape)# 讀取數據集batch_size = 128train_iter, test_iter = d2l.load_data_fashion_mnist(batch_size, resize=224)# 訓練AlexNetlr, num_epochs = 0.01, 10d2l.train_ch6(net, train_iter, test_iter, num_epochs, lr, d2l.try_gpu())# 顯示圖像plt.show(block=True)  # block=True 確保窗口阻塞,直到手動關閉

實驗結果

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

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

相關文章

JVM 垃圾收集算法全面解析

1. 引言1.1 為什么需要垃圾收集?在Java應用中,垃圾收集(Garbage Collection,GC)是一個至關重要的機制,它使得開發者不需要手動管理內存。與傳統的語言(如C或C)不同,Java通…

Vmware中安裝的CentOS7如何擴展硬盤大小

起初創建虛擬機時,大小設置不合理,導致我在嘗試開源項目時空間不足重新擴展硬盤,不僅需要在虛擬機設置中配置,還需要在系統內重新進行分區一、虛擬機設置打開虛擬機設置→硬盤→擴展,將大小設置為自己期望的大小&#…

Python+MongoDB高效開發組合

如大家所知,Python與MongoDB的結合是一種高效的開發組合,主要用于通過Python進行數據存儲、查詢及管理,利用MongoDB的文檔型數據庫特性實現靈活的數據處理。下面讓 Python 連接上 MongoDB:安裝 PyMongo:pip3 install p…

【論文閱讀】Masked Autoencoders Are Effective Tokenizers for Diffusion Models

introduce什么樣的 latent 空間更適合用于擴散模型?作者發現:相比傳統的 VAE,結構良好、判別性強的 latent 空間才是 diffusion 成功的關鍵。研究動機:什么才是“好的 latent 表征”?背景:Diffusion Models…

每日一SQL 【游戲玩法分析 IV】

文章目錄問題案例執行順序使用分組解決問題 案例 執行順序 SQL 語句的執行順序(核心步驟) 同一層級的select查詢內部, 別名在整個 SELECT 計算完成前不生效 使用分組解決 select distinct s.product_id, Product.product_name from Sales sleft join …

內部文件審計:企業文件服務器審計對網絡安全提升有哪些幫助?

企業文件服務器審計工作不僅對提升企業網絡信息安全起到重要作用,還能對企業內部網絡文件信息是否合規進行判斷。因此企業文件服務器審計一直被高度重視。 一、文件服務器為何成為攻擊焦點? 企業文件服務器通常集中存儲財務報表、人事檔案、研發資料、客…

FusionOne HCI 23 超融合實施手冊(超聚變超融合)

產品介紹 FusionOne HCI作為實現企業信息一體化的IT基礎設施平臺,以“軟硬件垂直深度集成和調優”、“快速部署”、“統一管理”的理念,提供應用融合部署,提升核心業務運作效率,降低整體采購成本。 FusionOne HCI代表了IT產品的…

AI算姻緣測算小工具流量主微信小程序開源

功能特點 響應式設計:完美適配各種移動設備屏幕尺寸 精美UI界面: 柔和的粉紅色漸變背景 圓角卡片設計 精心設計的字體和間距 愛心圖標點綴 動態效果: 點擊按鈕時的動畫反饋 測算結果的平滑過渡動畫 愛心漂浮動畫 進度條動態填充 AI測算功能&a…

Vue獲取上傳Excel文件內容并展示在表格中

一、安裝依賴 npm install xlsx 二、引用依賴 import XLSX from xlsx 三、代碼實現 1、注意&#xff1a;函數 analysis 中reader.readAsBinaryString(file)&#xff0c;file的數據格式如圖所示 2、示例代碼 <!-- 項目使用的前端框架為非流行框架&#xff0c;主要關注…

pipelineJob和pipeline的關系

pipelineJob與pipeline在Jenkins體系中構成配置層與執行層的協同關系,具體關聯如下: 一、核心功能定位 概念作用實現層級pipelineJob定義Job的元數據(如SCM配置、日志策略)配置層pipeline描述實際構建流程(如階段劃分、并行任務)執行層scriptPath橋梁作用:將配置層定義…

第二十篇 Word文檔自動化:Python批量生成、模板填充與內容修改,告別繁瑣排版!

python實現word 自動化重復性文檔制作&#xff0c;手動填充模板&#xff0c;效率低下還易錯1.python-docx入門&#xff1a;Word文檔的“瑞士軍刀”&#xff01;1.1 安裝與基礎概念&#xff1a;文檔、段落、運行、表格1.2 打開/創建Word文檔&#xff1a;Python與Word的初次接觸1…

【C# in .NET】7. 探秘結構體:值類型的典型代表

探秘結構體&#xff1a;值類型的典型代表 在 C# 的類型系統中&#xff0c;結構體&#xff08;Struct&#xff09;作為值類型的典型代表&#xff0c;一直扮演著既基礎又微妙的角色。許多開發者在日常編碼中雖頻繁使用結構體&#xff08;如int、DateTime等&#xff09;&#xff0…

深入探討Hadoop YARN Federation:架構設計與實踐應用

Hadoop YARN Federation簡介基本概念與設計初衷Hadoop YARN Federation作為Apache Hadoop 3.x版本的核心特性之一&#xff0c;其本質是通過多集群聯合管理機制突破單點資源管理器的性能瓶頸。傳統YARN架構中&#xff0c;單個ResourceManager&#xff08;RM&#xff09;需要管理…

STM32固件升級設計——SD卡升級固件

目錄 概述 一、功能描述 1、BootLoader部分&#xff1a; 2、APP部分&#xff1a; 二、BootLoader程序制作 1、分區定義 2、 主函數 3、SD卡升級文件檢測和更新 4、程序跳轉 三、APP程序制作 四、工程配置&#xff08;默認KEIL5&#xff09; 五、運行測試 結束語…

基于Python的圖像文字識別系統

主要語言&#xff1a;Python數據庫&#xff1a;SQLiteUI界面&#xff1a;PYQT5文字識別模型&#xff1a;Tesseract OCR&#xff08;本地搭建&#xff09;主要功能&#xff1a;登錄注冊&#xff1a;登錄注冊功能。圖片管理&#xff1a;單張/多張上傳、圖片列表、預覽、刪除、切換…

028_分布式部署架構

028_分布式部署架構 概述 本文檔介紹如何設計和實現Claude應用的分布式部署架構&#xff0c;包括負載均衡、緩存策略、服務發現、容錯機制等。 微服務架構設計 1. 服務拆分策略 from abc import ABC, abstractmethod from typing import Dict, Any, Optional import asyncio im…

duckdb和pyarrow讀寫arrow格式的方法

arrow格式被多種分析型數據引擎廣泛采用&#xff0c;如datafusion、polars。duckdb有一個arrow插件&#xff0c;原來是core插件&#xff0c;1.3版后被廢棄&#xff0c;改為社區級插件&#xff0c;名字改為nanoarrow, 別名還叫arrow。 安裝 D install arrow from community; D…

機器人位姿變換的坐標系相對性:左乘法則與右乘法則解析?

文章目錄1. 全局坐標系下機器人位姿更新的左乘法則?2. 局部坐標系下機器人位姿增量更新的右乘法則?3. 相對位姿的計算3.1. 基于世界坐標系&#xff08;全局變換&#xff09;3.2. 基于 t1t_1t1? 時刻相機的局部坐標系&#xff08;局部變換&#xff09;3.3. 兩者區別設機器人當…

代碼隨想錄算法訓練營65期第20天

代碼隨想錄算法訓練營65期第20天 本文中使用到一些代碼隨想錄里面的圖片或者鏈接&#xff0c;在這里致敬程序員Carl 二叉搜索樹的最近公共祖先 相對于 二叉樹的最近公共祖先 本題就簡單一些了&#xff0c;因為 可以利用二叉搜索樹的特性。 題目鏈接&#xff1a;代碼隨想錄&…

LLaMA.cpp HTTP 服務參數: --pooling 嵌入模型 池化類型詳解

LLaMA.cpp HTTP 服務參數: --pooling 嵌入模型 池化類型詳解 --pooling {none,mean,cls,last,rank} 在 llama.cpp 的 embedding server 中&#xff0c;--pooling {none,mean,cls,last,rank} 參數用于指定 如何將輸入文本的 token 級嵌入向量聚合為句向量。以下是各選項的詳細解…