【深度學習】典型的 CNN 網絡

目錄

一、LeNet-5

(1)LeNet-5 網絡概覽

(2)網絡結構詳解

(3)關鍵組件與數學原理

3.1 局部感受野與卷積運算

3.2 權重共享

3.3 子采樣(Pooling)

3.4 激活函數

(4)訓練細節

(5)優勢與局限

(6)應用與影響

(7)對現代深度學習的啟示

二、AlexNet

(1)網絡結構概覽

(2)各層詳解

(3)關鍵創新與數學原理

(4)訓練細節

(5)優勢與局限

(6)對后續網絡的影響

三、VGGNet

1、VGG16

(1)詳細層級結構

(2)關鍵設計思想與數學原理

(3)訓練細節

(4)優勢與局限

(5)對后續網絡發展的影響

2、VGG19

(1)網絡整體架構概覽

(2)分層細節

(3)設計動機與數學原理

(4)訓練細節

(5)參數量與計算量

(6)優勢與局限

(7)VGG19 在現代的地位與應用

四、GoolgeNet

1、GoolgeNet——Inception - v1

(1)網絡整體架構概覽

(2)Inception 模塊詳解

(3)輔助分類器(Auxiliary Classifiers)

(4)訓練細節

(5)參數量與計算成本

(6)優勢與局限

(7)對后續網絡的影響

2、Inception 系列模型對比

(1)從 v1 到 v2:BatchNorm 與卷積分解引入

(2)從 v2 到 v3:更細粒度分解與模塊優化

(3)v4:更深、更統一的模塊設計

(4)Inception-ResNet:殘差連接的融合

(5)綜述對比與選型建議

3、GoolgeNet-Inception系列的后續改進:Xception、MobileNet、EfficientNet

(1)設計思想對比

(2)核心模塊詳解

2.1 深度可分離卷積(Depthwise Separable Convolution)

2.2 倒殘差結構與線性瓶頸(MobileNet-v2)

2.3 SE 注意力模塊(MobileNet-v3 & EfficientNet)

2.4 復合縮放(EfficientNet)

(3)架構配置與規模

(4)性能與效率對比

(5)適用場景與選型建議

小結

五、ResNet

1、ResNet 系列

(1)殘差學習(Residual Learning)動機

(2)殘差模塊結構

2.1 基本殘差塊(Basic Block)

2.2 瓶頸殘差塊(Bottleneck Block)

(3)ResNet 系列典型變體

(4)網絡總體流程

(5)訓練細節

(6)優勢與局限

(7)對后續網絡的影響

(8)小結

2、ResNet 的改進(概述)

(1)結構改進

(2)寬度與基數(Cardinality)探索

(3)連接模式與特征復用

(4)注意力與自適應模塊

(5)其他優化

(6)小結與選型建議


一、LeNet-5

????????在機器學習(ML)向深度學習(DL)演進的過程中,卷積神經網絡(CNN)作為處理圖像的核心模型,一直占據著重要地位。1998 年,Yann LeCun 等人提出的 LeNet-5 成功將 CNN 應用于手寫數字識別(MNIST),標志著深度學習在計算機視覺領域的開端。下一節,我們將全面剖析 LeNet-5 的設計理念、網絡結構、訓練方法及其對后續模型的深遠影響。

(1)LeNet-5 網絡概覽

LeNet-5 是一種典型的五層卷積神經網絡結構(不含輸入層和輸出層),包含三個卷積/激活層兩個池化(子采樣)層,以及后續的全連接層和輸出層。其核心設計思想包括:

  • 局部感受野(Local Receptive Field):每個神經元只連接輸入的局部區域,模擬生物視覺皮層結構。

  • 權重共享(Weight Sharing):同一特征圖(feature map)上的所有神經元共享一組卷積核參數,大幅減少參數量。

  • 子采樣(池化):空間降采樣帶來平移不變性,并減少計算量與過擬合風險。

(2)網絡結構詳解

輸入:32×32 灰度圖像(MNIST 原圖 28×28,邊緣補零至 32×32)

C1 – 卷積層
????????? ? 卷積核:6 個 5×5
????????? ? 輸出尺寸: (32–5+1)=28 → 6 個 28×28
????????? ? 參數量:6×(5×5)+6 偏置 = 156

S2 – 下采樣(平均池化)層
????????? ? 窗口:2×2,步長 2
????????? ? 輸出尺寸:6×14×14
????????? ? 參數量:6×2 = 12(每個特征圖的縮放和偏置參數)

C3 – 卷積層
????????? ? 卷積核:16 個 5×5
????????? ? 連接方式:每個輸出特征圖并非與 S2 全部 6 張輸入圖相連,而是設計局部連接,增強多樣性
????????? ? 輸出尺寸: (14–5+1)=10 → 16×10×10
????????? ? 參數量:約 1,216

S4 – 下采樣層
????????? ? 窗口:2×2,步長 2
????????? ? 輸出尺寸:16×5×5
????????? ? 參數量:16×2 = 32

C5 – 卷積層(等同全連接)
????????? ? 卷積核:120 個 5×5
????????? ? 由于輸入尺寸恰好 5×5,輸出變為 120×1×1,可視為全連接
????????? ? 參數量:120×(16×5×5)+120 偏置 = 48,120

F6 – 全連接層
????????? ? 84 個神經元
????????? ? 參數量:84×120+84 = 10,164

輸出層
????????? ? 10 個神經元(類別數)
????????? ? 參數量:10×84+10 = 850

──────────
**總參數量:≈ 60,000**
?

(3)關鍵組件與數學原理

3.1 局部感受野與卷積運算
  • 卷積:對輸入圖像 x?與權重核 w 進行“滑動矩陣乘加”:

    (x * w)[i,j] = \sum_{u=-\left \lfloor k/2 \right \rfloor}^{ \left \lfloor k/2 \right \rfloor} \sum_{ v = - \left \lfloor k/2 \right \rfloor}^{ \left \lfloor k/2 \right \rfloor} x[i+u, j+v]\ ,w[u,v]
  • 好處:提取局部特征,保持參數量低。

3.2 權重共享
  • 同一特征圖內各位置神經元共享一組權重核,減少參數,提高泛化。

3.3 子采樣(Pooling)
  • LeNet-5 中采用平均池化(Average Pooling):

    y_{i,j} = \frac{1}{4}\sum_{u=0}^{1}\sum_{v=0}^{1} x_{2i+u,\,2j+v}
  • 并引入可訓練的縮放因子與偏置 α,?β:

    y_{i,j} = \alpha \cdot \text{avg}(x) + \beta
  • 作用:降維、降噪、獲得平移不變性。

3.4 激活函數
  • 原論文中使用 sigmoid 或 tanh,現代改用 ReLU 以加速收斂、緩解梯度消失。

(4)訓練細節

  1. 損失函數:原文用平方誤差(MSE),對于分類任務現代更常用交叉熵(Cross?Entropy)。

  2. 優化算法:LeNet-5 使用帶動量(momentum)的隨機梯度下降(SGD+momentum)。

  3. 正則化:參數共享與池化本身即具正則效果;現代可加 L2 或 Dropout。

  4. 數據增強(當時較少):現代常用旋轉、平移、縮放、仿射變換等增強 MNIST 數據。

(5)優勢與局限

優勢

  • 端到端學習:無需手工設計特征,自動從數據中提取層級特征。

  • 參數高效:約 6 萬參數,在當時計算資源有限的環境中可行。

  • 平移不變性:卷積與池化帶來對圖像平移、輕微扭曲的魯棒。

局限

  • 網絡較淺:僅 5 層特征抽取,限制了對復雜圖像的建模能力。

  • 激活函數:sigmoid/tanh 易引起梯度消失。

  • 固定架構:缺乏現代批歸一化(BatchNorm)、殘差連接(ResNet)等技巧。

(6)應用與影響

  • 手寫數字識別:LeNet-5 在 MNIST 上達到 99.2% 以上精度,顯著優于當時方法。

  • 后續網絡奠基:AlexNet(2012)、VGG、ResNet 等深層網絡均基于“卷積+池化+全連接”的框架,不斷疊加層數、引入新技術。

  • 工業應用:早期 OCR、車牌識別等均借鑒 LeNet 思路。

(7)對現代深度學習的啟示

  1. 特征層級化:從邊緣→紋理→形狀的分級抽取思想沿用至今。

  2. 參數共享:高效減少參數的核心理念。

  3. 網絡結構設計:LeNet-5 完整展現了“Conv→Pool→Conv→Pool→FC→Output”的典型模式,仍是 CNN 設計的基石。

  4. 可擴展性:在深度、寬度、激活函數、正則化、優化等方面的改進,均建立在 LeNet-5 思想之上。

二、AlexNet

????????AlexNet 由 Alex Krizhevsky、Ilya Sutskever 和 Geoffrey Hinton 于 2012 年提出,是第一款在 ImageNet 規模數據集(ILSVRC?2012)上將錯誤率從 26% 降至 15% 的深度卷積神經網絡。它的成功標志著深度學習在計算機視覺領域的全面爆發,也奠定了現代深度卷積網絡設計的諸多核心思路。

(1)網絡結構概覽

AlexNet 可視為一個 “5 層卷積 + 3 層全連接” 的八層前饋網絡(不含輸入層、輸出 Softmax 層),主要特點包括:

  • 輸入224×224×3 彩色圖像(原文中先裁切為 256×256,再隨機剪裁為 224×224)

  • 卷積層:Conv1→LRN→Pool1→Conv2→LRN→Pool2→Conv3→Conv4→Conv5→Pool5

  • 全連接層:FC6 → Dropout → FC7 → Dropout → FC8 → Softmax

總體參數量約 6 千萬,計算量巨大,原文借助 2 塊 GPU 并行訓練。

(2)各層詳解

層次配置輸出尺寸參數量(約)
輸入224×224×3 彩色圖像224×224×3
Conv196 個 11×11 卷積核,步長 4,無填充;ReLU;LRN;3×3 最大池化,步長 255×55×9634.9K
Conv2256 個 5×5 卷積核,填充 2;ReLU;LRN;3×3 最大池化,步長 227×27×256614.4K
Conv3384 個 3×3 卷積核,填充 1;ReLU27×27×384885.7K
Conv4384 個 3×3 卷積核,填充 1;ReLU27×27×3841.33M
Conv5256 個 3×3 卷積核,填充 1;ReLU;3×3 最大池化,步長 213×13×256884.9K
FC6全連接,4096 單元;ReLU;Dropout(0.5)409637.75M
FC7全連接,4096 單元;ReLU;Dropout(0.5)409616.78M
FC8全連接,1000 單元(分類數);Softmax10004.10M
總計≈ 60.9M

LRN(Local Response Normalization):對局部相鄰通道做“亮度競爭”,幫助增強泛化;
Dropout:隨機丟棄一半神經元,防止過擬合。

(3)關鍵創新與數學原理

  1. ReLU 激活

    f(x) = \max(0,\,x)

    相較于 sigmoid/tanh,ReLU 收斂更快、緩解梯度消失。

  2. 局部響應歸一化 (LRN)
    對通道維度進行歸一化:

    b_{x,y}^i = a_{x,y}^i \bigg/\Big(k + \alpha \sum_{j=\max(0,i-n/2)}^{\min(N-1,i+n/2)} (a_{x,y}^j)^2\Big)^\beta

    促使高響應位置“抑制”周圍低響應,形成競爭機制。

  3. 重疊池化 (Overlapping Pooling)
    池化核 3×3,步長 2(而非典型的 2×2、步長 2),減輕過擬合、提升泛化。

  4. Dropout
    在全連接層每次前向傳播時,以 0.5 概率隨機“屏蔽”神經元,抑制 co?adaptation。

  5. 數據增強

    • 隨機水平翻轉

    • 隨機裁剪(從 256×256 裁為 224×224)

    • PCA 顏色抖動:對 RGB 三通道做主成分分析,加入微小擾動

  6. 雙 GPU 并行
    將模型“切分”在兩塊 GPU 上:

    • Conv1、Conv3、Conv5 在兩個 GPU 上各 48 個 filter

    • Conv2、Conv4 的 filter 跨 GPU 互連
      加速正向/反向傳播,緩解顯存限制。

(4)訓練細節

  • 優化器:SGD + momentum(動量系數 0.9)

  • 批大小:128

  • 初始學習率:0.01,每當驗證誤差不下降時 手動 降為原來 1/10

  • 權重衰減:0.0005(L2 正則化)

  • 訓練輪數:約 90 個 epoch

  • 訓練時間:在兩塊 NVIDIA GTX 580 GPU 上約 5–6 天

(5)優勢與局限

優勢

  • 大規模 ImageNet 驗證:首個深度 CNN 在 1000 類大型數據集上取得突破。

  • 設計模塊化:ReLU、Dropout、LRN、重疊池化等技巧,后來廣泛沿用。

  • 開源推動:模型與代碼公開,推動社區復現與改進。

局限

  • 參數量大:≈ 6,000 萬,存儲與計算成本高。

  • 歸一化方式過時LRN 效果有限,后續被 BatchNorm 替代

  • 架構較寬淺:僅 8 層,深度不足;且所有卷積核大小預設,不同尺度特征提取不足。

(6)對后續網絡的影響

  • VGG/GoogleNet:沿用“Conv→Pool”模塊化設計,探索更深(16–22 層)與更窄(3×3 卷積)結構。

  • BatchNorm、ResNet:針對梯度消失與訓練深度的改進,最終實現上百層網絡可訓練。

  • 模型壓縮與加速:對大規模模型的需求催生剪枝、量化、輕量化網絡(MobileNet 等)。

三、VGGNet

????????VGGNet 是由 Oxford 大學視覺幾何組(Visual Geometry Group,簡稱 VGG)于 2014 年提出的深度卷積神經網絡,論文標題為 “Very Deep Convolutional Networks for Large?Scale Image Recognition”。它在 ILSVRC?2014 比賽中以優異表現(Top?5 錯誤率 7.3%)獲得第二名,同時其簡潔的網絡設計思路和可復現性,對后續深層網絡研究產生了深遠影響。

網絡總體架構概覽:

VGGNet 以“堆疊同尺寸小卷積核”著稱,主要有兩種變體:

  • VGG16:13 個卷積層 + 3 個全連接層,共 16 層

  • VGG19:16 個卷積層 + 3 個全連接層,共 19 層

核心設計原則:

  1. 連續使用多個 3×3 卷積核(代替大尺寸卷積,如 5×5、7×7),保持感受野相同的同時增加非線性表達;

  2. 每兩到三層卷積后接一個 2×2 最大池化,逐步降低空間分辨率;

  3. 全連接層放在網絡末端,用于分類。

1、VGG16

(1)詳細層級結構

以 VGG16 為例,其網絡結構可分為 5 個卷積塊(Block)和 3 個全連接層:

Block層次輸出尺寸通道數說明
Block1Conv3×3×64 ×2 → MaxPool224×224 → 112×11264兩個 3×3 卷積后下采樣
Block2Conv3×3×128 ×2 → MaxPool112×112 → 56×56128
Block3Conv3×3×256 ×3 → MaxPool56×56 → 28×28256三個卷積層
Block4Conv3×3×512 ×3 → MaxPool28×28 → 14×14512
Block5Conv3×3×512 ×3 → MaxPool14×14 → 7×7512
FCFC?4096 → FC?4096 → FC?1000 (Softmax)1×1兩層大尺寸全連接 + 最后一層分類輸出
  • 卷積核均為 3×3,步長 1,填充 1;

  • 池化窗口 2×2,步長 2;

  • 激活函數:ReLU;

  • 總參數量:VGG16 約 138M,VGG19 約 144M。

(2)關鍵設計思想與數學原理

  1. 多層小卷積等效大卷積

    • 兩個連續 3×3 卷積層的等效感受野為 5×5;三個連續 3×3 的等效感受野為 7×7。

    • 小卷積核參數少、計算量低,同時中間多次 ReLU 增加了非線性表達能力。

  2. 深度網絡的可訓練性

    • 相比 AlexNet(8 層)和 ZFNet(8 層),VGGNet 將深度提高至 16–19 層。

    • ReLU 激活、合適的初始化(Xavier、He 初始化)以及小批量 SGD,使得深層網絡收斂成為可能。

  3. 統一架構簡化實現

    • 全網絡采用相同的卷積核大小和池化方式,代碼實現簡單,易于復現和擴展。

    • 多數后續工作(如 ResNet、Inception)都在此基礎上進行改進。


(3)訓練細節

  • 數據預處理

    • 輸入圖像先縮放到 256×256,再在訓練時隨機裁剪出 224×224;

    • 隨機水平翻轉;

    • 均值歸一化(減去 ImageNet 訓練集的 RGB 均值)。

  • 優化器

    • SGD + momentum(動量 0.9);

    • 初始學習率 0.01,每隔 30 個 epoch 降為原來的 1/10;

    • 批大小 256;

    • 訓練周期約 74 萬次迭代(約 90 epochs 總共耗時數周)。

  • 正則化

    • 權重衰減(L2 正則)系數 5e?4;

    • Dropout(0.5)僅應用于全連接層。


(4)優勢與局限

優勢

  • 深度與性能:在 ImageNet 上取得優異分類效果,為深度網絡可行性提供了實證。

  • 設計簡單易擴展:卷積塊模塊化,可靈活堆疊;代碼實現與復現成本低。

  • 小卷積核組合:減少參數,提升非線性表達。

局限

  • 模型體積大:138M 參數對存儲與內存要求高,不適合移動端部署。

  • 計算量大:推理與訓練耗時較長。

  • 缺少歸一化層:未使用 BatchNorm,后續往往需要在其基礎上加入 BN 層以加快收斂并提高精度。


(5)對后續網絡發展的影響

  1. 批歸一化(Batch Normalization)

    • Ioffe & Szegedy(2015)提出 BatchNorm,可插入到 VGG 卷積/全連接層后,大幅加速收斂并提升精度。

  2. 更深與更輕量化網絡

    • ResNet(2015)引入殘差連接,成功訓練百層以上深度;

    • GoogleNet/Inception(2014–2016)通過 Inception 模塊提高寬度與效率;

    • MobileNet、ShuffleNet(2017+)等輕量化網絡關注資源受限場景。

  3. 特征提取與遷移學習

    • VGG 的卷積塊常被作為“通用特征提取器”,在目標檢測(Faster R?CNN)、語義分割(FCN)等任務中作為 backbone 廣泛使用。

2、VGG19

????????VGG19 是 Oxford 大學 Visual Geometry Group(VGG)在 2014 年提出的“Very Deep Convolutional Networks for Large?Scale Image Recognition”一文中的一種變體。相比 VGG16,VGG19 在每個卷積塊中多堆疊了一層 3×3 卷積,從而將網絡深度提高到 19 層(不含輸入層與輸出 Softmax 層)。其簡潔而統一的設計,使得深度卷積網絡在當時取得了極佳性能,也為后續網絡架構提供了范式。

(1)網絡整體架構概覽

VGG19 主要由 5 個卷積模塊(Block)和 3 個全連接層(FC)組成:

  • 輸入224×224×3 彩色圖像

  • Block1:2 層 3×3 卷積 → 最大池化

  • Block2:2 層 3×3 卷積 → 最大池化

  • Block3:4 層 3×3 卷積 → 最大池化

  • Block4:4 層 3×3 卷積 → 最大池化

  • Block5:4 層 3×3 卷積 → 最大池化

  • FC6:4096 單元全連接 → ReLU → Dropout(0.5)

  • FC7:4096 單元全連接 → ReLU → Dropout(0.5)

  • FC8:1000 單元全連接 → Softmax

整網約 19 層(不含輸入與 Softmax 層),總參數量約 144M,在 ILSVRC?2014 上獲得 Top?5 錯誤率 7.3%。


(2)分層細節

模塊層數輸出尺寸通道數說明
Block1Conv3×3×64 ×2 → Pool2×2224→11264兩個卷積后下采樣
Block2Conv3×3×128 ×2 → Pool2×2112→56128
Block3Conv3×3×256 ×4 → Pool2×256→28256四個連續 3×3
Block4Conv3×3×512 ×4 → Pool2×228→14512
Block5Conv3×3×512 ×4 → Pool2×214→7512
FC6FC?4096 → ReLU → Dropout1×14096Dropout 概率 0.5
FC7FC?4096 → ReLU → Dropout1×14096
FC8FC?1000 → Softmax1×11000ImageNet 1000 類別
  • 卷積:均為 3×3、步長 1、填充 1;

  • 最大池化:2×2、步長 2;

  • 激活:ReLU;

  • 丟棄:僅在全連接層中使用 Dropout(0.5)。


(3)設計動機與數學原理

  1. 堆疊小卷積核

    • 兩層連續的 3×3 等效于一次 5×5 感受野,三層等效 7×7。

    • 小核帶來參數更少(3×3×C×C’ vs. 7×7×C×C’),且每層后插入 ReLU 增加非線性。

  2. 統一架構簡化實現

    • 全網卷積核、池化、激活方式一致,代碼極其簡潔可復現。

    • 容易堆疊更深層次,推動了深度網絡可行性研究。

  3. 深度表示能力

    • 隨著深度提高,網絡學習更抽象、更復雜的特征。但深度增加也帶來梯度消失與訓練難度,需要合適的初始化與優化策略。


(4)訓練細節

  • 數據預處理

    • 圖像縮放到 256×256,再隨機裁剪 224×224;

    • 隨機水平翻轉;

    • 減去 ImageNet 訓練集 RGB 均值。

  • 優化器

    • SGD + momentum(0.9);

    • 初始學習率 0.01,每隔 30 個 epoch 降為原來 1/10;

    • 批大小 256;

    • 權重衰減(L2 正則) 5e?4。

  • 訓練時間

    • 多 GPU 并行訓練,約需數周,視硬件性能而定。


(5)參數量與計算量

  • 參數量:約 144M(VGG16 為 138M),主要集中在全連接層(≈123M),卷積層約 20M。

  • 計算量:由于深度與通道數大,卷積操作浮點運算極多,推理耗時較長,不利于實時和資源受限環境。


(6)優勢與局限

優勢

  • 性能優異:在當時 ImageNet 上與 VGG16、GoogleNet 共同位列前茅。

  • 設計簡單:易于理解和實現,成為后續研究的基準模型。

  • 遷移學習效果好:前面多層卷積塊可作為通用特征提取器,廣泛用于檢測、分割等任務。

局限

  • 資源消耗大:144M 參數和深層結構導致存儲與內存占用高,推理速度慢。

  • 缺少歸一化:未使用 BatchNorm,訓練深度網絡較困難;后來常在 VGG 基礎上加入 BN。

  • 冗余特征:連續四層相同通道卷積存在信息冗余,后續網絡通過瓶頸結構、殘差連接等加以改進。


(7)VGG19 在現代的地位與應用

  1. 基準模型:仍被用作研究新算法時的對照網絡。

  2. 特征提取器:在目標檢測(Faster R?CNN、Mask R?CNN)、語義分割(FCN、U-Net)等領域大量采用 VGG19 預訓練權重。

  3. 網絡改進研究

    • 引入 BatchNorm 形成 VGG19?BN,加速訓練并略微提升精度;

    • 用 1×1 卷積或瓶頸層減少計算量(e.g. SqueezeNet、ResNet)。

四、GoolgeNet

????????GoogLeNet 是由 Szegedy 等人在 2014 年提出的 Inception 系列第一版網絡,論文題為 “Going Deeper with Convolutions”。它在 ILSVRC?2014 比賽中以 6.7% 的 Top?5 錯誤率奪冠,同時參數量僅約 6.8M,遠低于當時常見的 VGG(138M)和 AlexNet(60M)。GoogLeNet 的成功標志著“深度與寬度并重”與“高效結構設計”成為卷積網絡新方向。

1、GoolgeNet——Inception - v1

(1)網絡整體架構概覽

GoogLeNet 總體深度 22 層(不含池化層和輔助分類器),可分為以下部分:

  1. 初始卷積層與池化層:提取低級特征并快速降維

  2. 五個 Inception 模塊組合:每個模塊內部并行多尺度卷積與降維

  3. 全局平均池化 + Softmax:用全局特征直接分類,拋棄大規模全連接層

  4. 兩個輔助分類器:插入中間層,緩解梯度消失并作訓練正則化

網絡總體結構示意:

輸入 224×224×3
→ Conv(7×7, stride=2) → MaxPool(3×3,2)
→ Conv(1×1) → Conv(3×3) → MaxPool(3×3,2)
→ [Inception ×3] → MaxPool(3×3,2)
→ [Inception ×5] → MaxPool(3×3,2)
→ [Inception ×2]
→ 全局平均池化(7×7) → Dropout(0.4) → FC(1000) → Softmax

(2)Inception 模塊詳解

Inception 模塊的核心思想是在同一層并行使用多種感受野(1×1、3×3、5×5 卷積和 3×3 池化),并通過 1×1 卷積在每路上進行通道降維,達到“寬度”與“深度”兼顧、參數高效的效果。

? ? ? ? ? ? ? ?→ 1×1 Conv (降維) → 1×1 Conv →?│輸入 → 1×1 Conv (降維) → 3×3 Conv →?│├→ 1×1 Conv (降維) → 5×5 Conv →│└→ 3×3 MaxPool → 1×1 Conv (降維) →
  • 1×1 卷積

    • 用于快速降低通道數,減少后續大核(3×3、5×5)計算

    • 增加網絡非線性

  • 多尺度卷積并行

    • 同時捕捉局部與全局信息

  • 池化分支

    • 保留領域不變性

每個 Inception 模塊輸出通道數視具體版本而定,整個網絡通過堆疊多級 Inception 模塊實現 22 層深度。


(3)輔助分類器(Auxiliary Classifiers)

在第 4、7 兩個 Inception 模塊后各接一個小型卷積→全局平均池化→全連接→Softmax 分支:

  • 目的

    • 在訓練過程中提供額外的梯度信號,緩解深層網絡梯度消失

    • 作輕度正則化,防止中間層過擬合

  • 權重:Auxiliary loss 占總 loss 的 0.3;測試時舍棄,僅保留主分支。


(4)訓練細節

  • 數據預處理與增強

    • 圖像縮放至 256×256,再隨機裁剪 224×224;

    • 隨機水平翻轉;

    • PCA 顏色抖動(與 AlexNet 類似)。

  • 優化器

    • SGD + momentum(0.9);

    • 初始學習率 0.01,每隔 30 萬次迭代降為原來的 1/3;

    • 權重衰減 0.0002;

    • 批大小 128;

    • 訓練約 90 萬次迭代。

  • 正則化

    • Dropout(0.4) 僅在最后全局平均池化后使用;

    • Auxiliary classifiers 自身亦含 Dropout(0.7)。


(5)參數量與計算成本

項目數值
總參數量≈ 6.8M
浮點運算量 (FLOPs)≈ 1.5B(十億級)
特征圖尺寸224 → 112 → 56 → 28 → 14 → 7
GPU 內存需求約 2–3 GB

相比同時期的 VGG(138M)和 AlexNet(60M),GoogLeNet 在參數量上減少 90%+,同時保持更深的結構。


(6)優勢與局限

優勢

  1. 參數高效:1×1 降維顯著減少參數。

  2. 多尺度特征融合:并行卷積捕捉不同大小的圖案。

  3. 深度可達 22 層:在當時可訓練更深網絡。

  4. 輔助分類器:提高訓練速度與穩定性。

局限

  1. 結構復雜:模塊內部多分支,代碼與調試難度大。

  2. 計算開銷依舊可觀:雖參數少但 FLOPs 高,不利于實時部署。

  3. 無批歸一化:Inception v1 未使用 BatchNorm,訓練對超參較敏感。


(7)對后續網絡的影響

  • Inception 系列

    • v2/v3 引入 BatchNorm、Factorization(分解大卷積);

    • v4/v5 融合殘差連接,形成 Inception?ResNet。

  • ResNet

    • Inspired by 深度可訓練性與輔助分類器,提出殘差單元(Residual Block)使網絡可達百層。

  • MobileNet/ShuffleNet

    • 繼承 1×1 降維與分組卷積思想,進一步輕量化。

  • 自動化結構搜索(NAS)

    • Inception 模塊的“多分支”思想啟發 NAS 方法自動搜索最佳分支組合。

2、Inception 系列模型對比

以下表格與分析對比了 Inception 系列主要版本(v1/v2/v3/v4 及 Inception-ResNet)的設計思想、模塊改進、參數規模與性能提升。隨后給出逐項詳解。

特性/版本Inception v1<br>(GoogLeNet)Inception v2Inception v3Inception v4Inception-ResNet v1/v2
首次發表2014 年
“Going Deeper…”
2015 年
“Batch Norm…”
2015 年
“Rethinking…”
2016 年
“Inception v4…”
2016 年
“Inception-ResNet…”
基本模塊原始 Inception
4 支路
加入 BatchNorm
降維 Factor
進一步 Factorize 卷積簡化版 Inception-v3 模塊在 v3 基礎上加入殘差連接
卷積分解(Factorization)5×5→兩個 3×3;3×3→1×3+3×1進一步將 3×3 分解為 1×3+3×1沿用 v3,同時微調模塊寬度同 v4,同時使用殘差合并
歸一化(Normalization)在幾乎所有卷積后加入 BatchNorm同 v2同 v2同 v2
輔助分類器存在兩路
訓練時使用
保留但權重微調去除輔助分支去除輔助分支去除輔助分支
池化策略普通 3×3 最大池化同 v1同 v1同 v1同 v1
全局池化 + FC全局平均池化 → Dropout → FC同 v1同 v1同 v1同 v1
深度(大約層數)22 層~55 層~75 層~80 層~80 層
參數量~6.8M~11M~23M~42M~55M
Top-5 ImageNet(單裁剪)6.7%~5.6%~5.6%~5.5%~5.5%
主要創新點多尺度并行 + 1×1 降維BatchNorm + 卷積分解更細粒度卷積分解 + 新模塊統一模塊設計 + 更深網絡殘差連接加速收斂 + 提升性能

(1)從 v1 到 v2:BatchNorm 與卷積分解引入

  • Batch Normalization:在幾乎所有卷積層后加入 BN,大幅加快收斂、提高學習率容忍度;

  • 卷積分解(Factorization)

    • 將原始模塊中的 5×5 卷積分解為兩個串聯的 3×3,減少參數與計算;

    • 將某些 3×3 分支再分解為 1×3 + 3×1,進一步降低計算開銷。

效果:訓練更穩定,Top-5 錯誤率從 6.7% 降至約 5.6%;參數量增加到 ~11M,但計算效率更高。


(2)從 v2 到 v3:更細粒度分解與模塊優化

  • 更細粒度分解:對所有 3×3 卷積引入 1×3+3×1 分解;

  • 模塊重構:Inception-v3 重新設計了各個 Inception 模塊(A/B/C 類型),細分通道分配策略;

  • 輔助分類器:v3 中逐步淡化,訓練時可選加入,評估階段通常舍棄。

效果:網絡深度增至 ~75 層,參數量 ~23M,Top-5 ≈5.6%,精度和計算效率均優于 v2。


(3)v4:更深、更統一的模塊設計

  • 統一模塊:將 Inception-v3 中不同類型模塊統一為三種 Inception-A/B/C,更易復現;

  • 更深網絡:整個網絡深度擴展到 ~80 層;

  • Removed Technical Debt:去除少量歷史冗余(如部分輔助分支),僅保留必要結構。

效果:參數量 ~42M,Top-5 進一步微小提升至 ≈5.5%,但訓練與推理成本增大。


(4)Inception-ResNet:殘差連接的融合

  • 殘差連接(Residual Connection):在每個 Inception 模塊輸出添加短路分支(identity mapping),借鑒 ResNet “恒等”思想;

  • 加速收斂:殘差有助于緩解梯度消失,使得更深網絡訓練更高效;

  • 版本區別

    • v1:輕量級殘差改造,參數 ~55M;

    • v2:批量歸一化、模塊微調,精度略優。

效果:在 v4 精度基礎上,收斂速度更快,訓練更穩定。Top-5 ≈5.5%,但參數與計算量進一步增加。


(5)綜述對比與選型建議

需求場景建議版本理由
資源受限部署Inception v1參數最少(≈6.8M),推理輕量
高精度分類Inception v3/v4精度與效率平衡;v3 參數較少(≈23M),v4 精度略優但更重
訓練速度優先Inception-ResNet殘差連接加速收斂,適合超深網絡訓練
研究與改進基線v3 + ResNet 混合模塊化與性能成熟,易于在此基礎做新穎結構探索
遷移學習通用特征提取v3/v4中層特征豐富,模塊設計規范,社區支持廣泛

3、GoolgeNet-Inception系列的后續改進:Xception、MobileNet、EfficientNet

????????下面,我們從網絡設計思想核心模塊架構配置性能對比適用場景五個維度,詳細分析 Xception、MobileNet(含 v1/v2/v3)與 EfficientNet(B0–B7)三大輕量級與高效網絡。

(1)設計思想對比

網絡核心思想
Xception“Extreme Inception”——將 Inception 模塊中多分支卷積分解為深度可分離卷積(Depthwise Separable Convolution)
MobileNet輕量化全卷積:
  • v1:標準深度可分離卷積 + 寬度/分辨率乘子

  • v2:倒殘差結構 + 線性瓶頸

  • v3:NAS 自動搜索 + SE 注意力 | | EfficientNet| 復合縮放(Compound Scaling)
    按比例同時縮放網絡深度、寬度、輸入分辨率,基于 NAS 搜索得到基準 B0,再生成 B1–B7 |


(2)核心模塊詳解

2.1 深度可分離卷積(Depthwise Separable Convolution)
  • Depthwise:對每個輸入通道獨立應用 a×a 卷積

  • Pointwise:緊接 1×1 卷積將通道混合

  • 參數與計算量

    • 普通卷積:D_K^2 · M · N

    • 可分離卷積:D_K^2 · M + M · N
      參數量、FLOPs 減少約 \displaystyle\frac{1}{N} + \frac{1}{D_K^2}

2.2 倒殘差結構與線性瓶頸(MobileNet-v2)
  • 擴張層:先用 1×1 卷積擴展通道;

  • Depthwise 卷積:3×3;

  • 線性投影:1×1 減少通道;

  • 跳躍連接:在通道和空間尺寸一致時實施殘差。

2.3 SE 注意力模塊(MobileNet-v3 & EfficientNet)
  • Squeeze:全局平均池化得到通道統計;

  • Excitation:兩層 FC→Sigmoid,生成每通道縮放系數;

  • Scale:對原特征圖通道加權。

2.4 復合縮放(EfficientNet)
  • 定義系數 \phi,使深度 d = \alpha^\phi,寬度 w = \beta^\phi,分辨率 r = \gamma^\phi,并滿足 \alpha\cdot\beta^2\cdot\gamma^2 \approx 2?。

  • 在基準 B0 上依次生成 B1–B7。


(3)架構配置與規模

網絡/版本參數量FLOPsImageNet Top-1<br>(單裁剪)關鍵結構
Xception~22.9M~8.4B79.0%36× depthwise sep conv + 14× pointwise conv
MobileNet-v1~4.2M~569M70.6%Depthwise sep conv + width/res multipliers
MobileNet-v2~3.4M~300M72.0%Inverted ResBlock + linear bottleneck
MobileNet-v3-Large~5.4M~219M75.2%NAS 搜索模塊 + SE
EfficientNet-B0~5.3M~390M77.1%基準復合縮放網絡
EfficientNet-B4~19M~4.2B82.9%φ=4 復合縮放
EfficientNet-B7~66M~37B84.3%φ=7 復合縮放

注:FLOPs 均指單次前向推理的乘加運算量;Top-1 精度基于 ImageNet 驗證集。


(4)性能與效率對比

  1. 計算效率(FLOPs)

    • 最低:MobileNet-v2 (~300M)

    • 中等:MobileNet-v1/v3、EfficientNet-B0 (~400–600M)

    • 最高:Xception (~8.4B)、EfficientNet-B4/B7

  2. 參數規模

    • 極小:MobileNet-v2 (~3.4M)

    • :MobileNet-v1/v3、EfficientNet-B0 (~4–6M)

    • 中等:Xception (~23M)、EfficientNet-B4 (~19M)

    • :EfficientNet-B7 (~66M)

  3. 精度(Top-1)

    • 入門級:MobileNet-v1 (~70.6%)

    • 中檔:MobileNet-v2 (~72.0%)、MobileNet-v3 (~75.2%)

    • 高級:Xception (~79.0%)、EfficientNet-B0 (~77.1%)

    • 頂級:EfficientNet-B4/B7 (82.9% / 84.3%)


(5)適用場景與選型建議

應用場景推薦網絡理由
極致輕量化部署MobileNet-v2參數與計算量最小,適合算力極低的嵌入式設備
移動端與邊緣端MobileNet-v3 / EfficientNet-B0在有限資源下兼顧精度,SE 注意力和復合縮放提升了表示能力
通用高效特征提取Xception / EfficientNet-B0Xception 多層深度可分離卷積能提取豐富特征;EfficientNet-B0 綜合效率與精度最佳
高精度離線推理EfficientNet-B4 / B7高精度需求、計算資源充足時優選
研究新架構對比基線Xception / EfficientNet經典模塊化設計與復合縮放策略,常見于論文對比基線

小結

  • Xception:將 Inception 極端化,全面引入深度可分離卷積,性能優異但計算量大;

  • MobileNet 系列:輕量化代表,從 v1 的寬度/分辨率乘子到 v2/v3 的結構改進(倒殘差、SE),適合移動與邊緣場景;

  • EfficientNet 系列:最系統的復合縮放策略,在各資源預算下取得最優精度/效率平衡,是當前輕量化高性能網絡的旗艦。

五、ResNet

????????Residual Network(ResNet)由 Kaiming He 等人在 2015 年提出,論文題為 “Deep Residual Learning for Image Recognition”。它在 ILSVRC-2015 比賽中以顯著優勢(Top-5 錯誤率 3.57%)奪冠,解決了“網絡加深反而性能下降”的難題,開啟了百層以上超深網絡的時代。

1、ResNet 系列

(1)殘差學習(Residual Learning)動機

  • 隨著網絡深度增加,傳統的“堆疊卷積→ReLU”結構出現 退化現象:更深網絡反而在訓練/驗證上損失更高。

  • ResNet 提出殘差模塊(Residual Block),讓網絡學習殘差映射

    \mathcal{F}(x) := \mathcal{H}(x) - x \quad\Longrightarrow\quad \mathcal{H}(x) = \mathcal{F}(x) + x

    通過“旁路”直連(identity shortcut),保證主分支至少能學習到恒等映射 x,從而緩解退化、加速收斂。


(2)殘差模塊結構

2.1 基本殘差塊(Basic Block)

用于 ResNet-18/34,結構如下:

輸入 x↓
Conv3×3, C→C, stride s↓
BatchNorm → ReLU↓
Conv3×3, C→C, stride 1↓
BatchNorm↓
+ Shortcut(x) ?——→ ReLU↓
輸出
  • Shortcut 分支:當輸入輸出通道或空間尺寸不一致時,用 1×1 卷積 + BatchNorm 做對齊;否則直接恒等映射。

  • 參數量:每個 Basic Block ≈ 2×(3×3×C×C) 卷積參數。

2.2 瓶頸殘差塊(Bottleneck Block)

用于 ResNet-50/101/152,將 3×3 卷積分為三段:

輸入 x↓
1×1 Conv, C→C/4 ?↓
BatchNorm → ReLU↓
3×3 Conv, C/4→C/4, stride s↓
BatchNorm → ReLU↓
1×1 Conv, C/4→C ?↓
BatchNorm↓
+ Shortcut(x) ?——→ ReLU↓
輸出
  • 思路:先降維(1×1),再做計算(3×3),再升維(1×1),大幅減少計算量。

  • 參數量:每個 Bottleneck Block ≈??C\times\frac C4 + 3^2\times(\frac C4)^2 + \frac C4\times C 總和。


(3)ResNet 系列典型變體

版本層數Block 類型每個 Stage Block 數量參數量Top-1 ImageNet 精度
ResNet-1818Basic[2,2,2,2]11.7M~69.8%
ResNet-3434Basic[3,4,6,3]21.8M~73.3%
ResNet-5050Bottleneck[3,4,6,3]25.6M~76.2%
ResNet-101101Bottleneck[3,4,23,3]44.5M~77.4%
ResNet-152152Bottleneck[3,8,36,3]60.2M~78.3%
ResNet-200200Bottleneck[3,24,36,3]~64M~79.0%
  • Stage:表示網絡中輸出特征圖尺寸相同的卷積塊組,每組下第一個 block 可能 stride=2 以做空間降采樣。

  • 深度越大,提取特征更豐富,但計算與內存開銷也隨之上升。


(4)網絡總體流程

  1. 輸入處理

    • 圖像縮放到 256×256,隨機裁剪 224×224;

    • 隨機水平翻轉;

    • 減去 ImageNet 訓練集 RGB 均值;

  2. Stem 模塊

    Conv7×7, stride=2, 64 filters
    → BatchNorm → ReLU
    → MaxPool3×3, stride=2
  3. 四個殘差 Stage

    • Stage1:C=64 輸出,塊數視版本而定

    • Stage2:C=128, 第一個塊 stride=2

    • Stage3:C=256, 第一個塊 stride=2

    • Stage4:C=512, 第一個塊 stride=2

  4. 全局平均池化 + 全連接

    GlobalAvgPool → FC (1000) → Softmax

(5)訓練細節

  • 優化器:SGD + momentum(0.9)

  • 初始學習率:0.1,每隔 30 個 epoch 降為 1/10

  • 批大小:256

  • 權重衰減:1e-4

  • 訓練周期:90 epoch


(6)優勢與局限

優勢

  1. 可訓練超深網絡:殘差連接有效解決退化與梯度消失問題,使網絡深度可擴展到上百層。

  2. 模塊化設計:Basic 與 Bottleneck 兩種可選結構,自由組合,易于擴展與改進。

  3. 遷移學習基石:ResNet 各版本預訓練權重廣泛用于目標檢測、分割、生成對抗等下游任務。

局限

  1. 計算與內存開銷大:尤其是 ResNet-50 以上的變體,不適合資源極度受限場景。

  2. 信息冗余:恒等映射旁路雖保留信息,卻也帶來一定冗余,后續 DenseNet 等嘗試更緊密特征復用。

  3. 網絡寬度固定:每個 Stage 通道數翻倍,可能不是最優分配,后續網絡(e.g. ResNeXt、Wide ResNet)對“寬度”做了更多探索。


(7)對后續網絡的影響

  • Wide ResNet:將 Bottleneck Block 通道數加寬,減少深度,取得更快收斂與更高精度;

  • ResNeXt:在殘差基礎上引入“分組卷積+聚合”(cardinality)概念;

  • DenseNet:用“密集連接”替代恒等旁路,實現更強特征復用;

  • Res2Net、ResNeSt:細化殘差單元內部結構、引入注意力機制,進一步提升性能。


(8)小結

????????ResNet 通過殘差學習的核心思想,成功擊破“網絡過深退化”難題,使得超深網絡訓練成為可能。其模塊化、易擴展的設計,不僅在分類任務中大放異彩,更成為現代各類視覺任務的基礎 Backbone。深入理解 ResNet 的原理與架構,有助于把握深度網絡設計要點,并為創新高效網絡提供重要啟示。

2、ResNet 的改進(概述)

????????以下是 ResNet 自問世以來,社區和產業界在“殘差學習”基礎上所作的主要改進與衍生網絡,按改進思路可分為“結構改進”“寬度/基數探索”“連接模式創新”“注意力/自適應模塊”四大類。


(1)結構改進

網絡主要改進點
ResNet-v2“Pre-activation” 版本,將 BatchNorm→ReLU 置于殘差分支前端,顯著加快收斂并提高精度。
ResNet-D在空間降采樣處(stride=2)對 shortcut 分支做輕量卷積填充、避免信息丟失,提升小物體識別性能。
Stochastic Depth對殘差分支隨機丟棄(訓練時每個 block 以一定概率跳過),起到正則化作用,加速超深網絡訓練。
Pre-activation ResNeXt將 ResNeXt 與 Pre-activation 結合,兼具多分支聚合和更穩定的梯度流。

(2)寬度與基數(Cardinality)探索

網絡關鍵思路
Wide ResNet減少深度、成倍增加每層通道數(width),在參數量相近下大幅提升精度;訓練和推理更快。
ResNeXt引入“基數”(cardinality)概念:將單個殘差塊拆分為多路等結構并行、再聚合(類似分組卷積),比增加深度或寬度更有效。
Res2Net在單個殘差塊內部進一步拆分“多尺度”子特征流,并做交互融合,增強塊內部的多尺度表示能力。

(3)連接模式與特征復用

網絡創新點
DenseNet“密集連接”:每層與前面所有層直接連接,梯度和特征高度復用,大幅減少冗余、增強特征傳遞;參數量更少。
DualPathNet同時兼具 ResNet 的恒等旁路和 DenseNet 的密集連接,好處兼得——既有特征復用又保留殘差學習優勢。
PyramidNet隨網絡向深處,殘差塊的通道數以線性或指數方式累積增長,實現漸進式寬度提升,并結合預激活設計。

(4)注意力與自適應模塊

網絡模塊/機制
SENet“Squeeze-and-Excitation”:對通道維度做全局信息壓縮與兩層 FC 生成通道權重,自適應重標定;2017 ILSVRC 冠軍。
CBAM“Convolutional Block Attention Module”:在空間和通道兩個維度依次做注意力,用更少開銷提升表示能力。
SKNet“Selective Kernel”:用不同大小卷積核并行,再通過軟注意力自適應融合各核響應,實現動態感受野選擇。
ResNeSt在殘差塊中引入“Split-Attention”分支,將多路特征分組后自適應融合,并結合全局上下文或位置信息,效果優于 SENet/CBAM。

(5)其他優化

  • Shake-Shake / ShakeDrop:在 ResNeXt 基礎上對多分支輸出做隨機加權或丟棄,進一步正則化。

  • EfficientNet-ResNet 混合:基于 EfficientNet 的復合縮放策略,使用殘差或注意力模塊,取得更優精度/效率平衡。

  • RegNet 系列:從可解釋參數化設計出發,直接搜索一族高效、可伸縮的網絡寬度與深度配置,并可結合殘差結構。


(6)小結與選型建議

  1. 訓練更深:選擇 ResNet-v2、ResNet-D + Stochastic Depth,可輕松訓練百層以上網絡且更穩定。

  2. 資源受限Wide ResNet(參數量適中、精度高、推理快)或 ResNeXt(基數可調、通用性好)。

  3. 特征復用DenseNetDualPathNet,在輕量級場景中也能取得不俗性能。

  4. 注意力增強:在 ResNet 基礎上加 SE/CBAM/Split-Attention 模塊,可幾乎“零”額外深度提升精度。

  5. 自動化設計:考慮 RegNetEfficientNet+Residual 混合模型,用可解釋的設計原則或 NAS 產生的配置,平衡精度與效率。

以上網絡針對「更深更寬」「更高效特征利用」「更智能注意力分配」等不同維度,對 ResNet 做出了多樣化改進,可根據應用場景和算力預算酌情選擇與組合。

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

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

相關文章

4.8/Q1,中山大學用NHANES:膳食煙酸攝入量與非酒精性脂肪肝之間的關聯

文章題目&#xff1a;Association between Dietary Niacin Intake and Nonalcoholic Fatty Liver Disease: NHANES 2003-2018 DOI&#xff1a;10.3390/nu15194128 中文標題&#xff1a;膳食煙酸攝入量與非酒精性脂肪肝之間的關聯&#xff1a;NHANES 2003-2018 發表雜志&#xf…

高效管理遠程服務器Termius for Mac 保姆級教程

以下是 Termius for Mac 保姆級教程&#xff0c;涵蓋安裝配置、核心功能、實戰案例及常見問題解決方案&#xff0c;助你高效管理遠程服務器&#xff08;如Vultr、AWS等&#xff09;。 一、Termius 基礎介紹 1. Termius 是什么&#xff1f; 跨平臺SSH客戶端&#xff1a;支持Ma…

理解數學概念——支集(支持)(support)

1. 支集(support)的定義 在數學中&#xff0c;一個實函數 f 的支集(support)是函數的不被映射到 0 的元素域(即定義域)的子集。若 f 的(定義)域(domain)是一個拓撲空間(即符合拓撲的集合)&#xff0c;則 f 的支集則定義為包含( f 的元素域中)不被映射到0的所有點之最小閉集…

Vue 3 Element Plus 瀏覽器使用例子

Element Plus 是一個基于 Vue 3 的流行開源 UI 庫&#xff0c;提供了一系列的組件&#xff0c;幫助開發者快速構建現代化的用戶界面。它的設計簡潔、現代&#xff0c;包含了許多可定制的組件&#xff0c;如按鈕、表格、表單、對話框等&#xff0c;適合用于開發各種 Web 應用。 …

SSR vs SSG:前端渲染模式終極對決(附 Next.js/Nuxt.js 實戰案例)

一、引言&#xff1a;前端渲染模式的進化之路 隨著互聯網的發展&#xff0c;用戶對于網頁的加載速度和交互體驗要求越來越高。前端渲染技術作為影響網頁性能的關鍵因素&#xff0c;也在不斷地發展和演進。從最初的客戶端渲染&#xff08;CSR&#xff09;&#xff0c;到后來的服…

算法筆記.分解質因數

代碼實現&#xff1a; #include<iostream> using namespace std; void breakdown(int x) {int t x;for(int i 2;i < x/i;i){if(t%i 0){int counts 0;while(t % i 0){t/i;counts;}cout << i <<" "<< counts<<endl;}}if(t >…

CUDA Error: the provided PTX was compiled with an unsupported toolchain

CUDA程序編譯時生成的PTX代碼與系統上的CUDA驅動版本不兼容 CUDA 編譯器版本&#xff1a; CUDA 12.6 (nvcc 編譯器版本) CUDA 驅動版本&#xff1a; CUDA 12.3 (nvidia-smi 驅動版本) 解決方法&#xff1a; 驅動版本下載參考&#xff1a;Your connected workspace for wiki…

計算機組成原理實驗(7) 堆指令部件模塊實驗

實驗七 堆指令部件模塊實驗 一、實驗目的 1、掌握指令部件的組成方式。 2、熟悉指令寄存器的打入操作&#xff0c;PC計數器的設置和加1操作&#xff0c;理解跳轉指令的實現過程。 二、實驗要求 按照實驗步驟完成實驗項目&#xff0c;掌握數據打入指令寄存器IR1、PC計數器的…

2022 年 6 月大學英語四級考試真題(第 2 套)——閱讀版——仔細閱讀題

&#x1f3e0;個人主頁&#xff1a;fo安方的博客? &#x1f482;個人簡歷&#xff1a;大家好&#xff0c;我是fo安方&#xff0c;目前中南大學MBA在讀&#xff0c;也考取過HCIE Cloud Computing、CCIE Security、PMP、CISP、RHCE、CCNP RS、PEST 3等證書。&#x1f433; &…

磁盤文件系統

磁盤文件系統 一、磁盤結構1.1 認識一下基礎的硬件設備以及真實的機房環境1.2 磁盤物理結構與存儲結構1、磁盤物理結構2、磁盤的存儲結構3、CHS地址定位4、磁盤的邏輯結構&#xff08;LBA&#xff09;5 磁盤真實過程5 CHS && LBA地址 二、理解分區、格式化1 引?"…

基于LangChain 實現 Advanced RAG-后檢索優化(下)-上下文壓縮與過濾

摘要 Advanced RAG 的后檢索優化&#xff0c;是指在檢索環節完成后、最終響應生成前&#xff0c;通過一系列策略與技術對檢索結果進行深度處理&#xff0c;旨在顯著提升生成內容的相關性與質量。在這些優化手段中&#xff0c;上文壓縮與過濾技術是提升檢索結果質量的重要手段。…

為什么 Vite 速度比 Webpack 快?

一、webpack會先進行編譯&#xff0c;再運行&#xff0c;vite會直接啟動&#xff0c;再按需編譯文件。 首先看兩張圖&#xff0c;可以清晰的看到&#xff0c;上面的圖是webpack編譯過的&#xff0c;而下面的圖是vite直接使用工程內文件。 二、區別于Webpack先打包的方式&am…

C# 操作符

C# 操作符 一、操作符概覽二、優先級與運算順序三、各類操作符的實例 一、操作符概覽 操作符&#xff08;運算符&#xff09;的本質是函數的簡記法 操作符不能脫離與它關聯的數據類型 int x 5; int y 4; int z x / y; Console.WriteLine(z);//輸出1double a 5.0; double b…

C++設計模式:面向對象的八大設計原則之四

里氏替換原則&#xff08;Liskov Substitution Principle&#xff0c;LSP&#xff09;是面向對象設計中的一個重要原則&#xff0c;它指出子類必須能夠替換它的基類&#xff0c;并且程序的行為不會發生改變。也就是說&#xff0c;在任何使用基類對象的地方&#xff0c;都可以透…

網絡通信領域的基礎或流行協議

一、TCP(傳輸控制協議) 1. 宏觀介紹 TCP:全稱“Transmission Control Protocol”——傳輸控制協議,是互聯網最基礎的傳輸協議之一。傳輸層協議,提供面向連接、可靠的字節流傳輸服務。它通過三次握手建立連接、四次揮手斷開連接,確保數據有序、完整地傳輸作用:讓兩個設備…

【教學類-34-10】20250503(通義萬相)4*3蝴蝶拼圖(圓形、三角、正方、半圓的凹凸小塊+參考圖灰色)

背景需求 2023年從網站上搜索拼圖代碼,陸續改良了圓形、三角形、菱形凹凸) 【教學類-34-05】20230425拼圖(“圓角”凹凸拼圖)3*4格子(中班主題《個別化拼圖》偏美術)_拼圖的槽叫什么形狀-CSDN博客文章瀏覽閱讀1.1k次。【教學類-34-05】20230425拼圖(“圓角”凹凸拼圖)…

bellard.org? : QuickJS 如何使用 qjs 執行 js 腳本

參閱上一篇&#xff1a;Fabrice Bellard&#xff08;個人網站&#xff1a;?bellard.org?&#xff09;介紹 Fabrice Bellard&#xff08;個人網站&#xff1a;?bellard.org?&#xff09;是計算機領域最具影響力的程序員之一&#xff0c;其貢獻跨越多個技術領域并持續推動開…

數據結構---

案例一 1.隨機生成n個工人工時&#xff0c;100以內&#xff0c;工號分別為2021101到2021100n 2.以工時數為關鍵字分別使用選擇排序、冒泡排序、插入排序進行升序排序。 3.把排序后的結果輸出&#xff0c;包括工號工時數 4.比較三種算法對相同的n值數組排序所花的時間 代碼如下&…

Python硬核革命:從微控制器到FPGA的深度開發指南

1. 重新定義硬件開發:Python的顛覆性突破 傳統硬件開發長期被C/C++和Verilog/VHDL統治,但Python正通過兩條路徑改變這一格局: 1.1 微控制器領域的MicroPython革命 完整Python 3.4語法支持,運行在資源受限的MCU上(最低要求:64KB ROM,16KB RAM) 直接內存訪問能力,突破…

基于springboot+vue的寵物共享平臺

開發語言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8服務器&#xff1a;tomcat7數據庫&#xff1a;mysql 5.7數據庫工具&#xff1a;Navicat12開發軟件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;Maven3.3.9 系統展示 寵物寄養管理 寵…