iPAS AI 應用規劃師 中級 科目三 機器學習技術與應用

VGG16 架構哪個敘述正確?

原題 44

VGG16 連題組第三題:VGG16 層數深且結構規則,由多層卷積、池化及全連接層組成。了解各層的輸入/輸出維度、參數量及記憶體需求,有助於掌握 CNN 模型的組成邏輯與實作技巧。根據 VGG16 的模型架構,下列敘述何者正確?

(A) AdaptiveAvgPool2d 的輸出會被攤平後傳入第一個全連接層;由於前一層池化輸出空間為 4×4,所以第一個線性層的輸入維度是 512×4×4 = 8192
(B) Linear-33(第一個全連接層)報出的 102,764,544 參數只包含權重,偏差(bias)沒有算在內
(C) 根據列出的「Estimated Total Size (MB) = 624.98」,表示訓練此模型只需大約 625MB 的 GPU 記憶體(包含所有 optimizer state 與梯度),所以一張 1 GB 的 GPU 就足夠訓練
(D) VGG16 包含 13 層卷積(conv)與 3 層全連接層(FC),總參數數目約為 138,357,544(約 138.36M)

白話

動物園影像辨識專案的工程師讀了 VGG16 的模型摘要報告後,面對四個關於 VGG16 架構的描述,每個描述都涉及具體的數字或設計細節,有些有細微的錯誤。

問你:四個關於 VGG16 架構的描述中,哪一個是正確的?

點選你的答案。

01 總結

一句話總結

四個敘述中,正確的是選項 D:VGG16 確實有 13 層卷積與 3 層全連接,總參數約 138,357,544(138.36M)。其他三個選項各有一個具體的數字或概念錯誤。

02 情境

先感受問題:讀懂模型摘要表的「小陷阱」

動物園工程師印出 VGG16 的 model.summary(),拿到一張數字密密麻麻的報告:每層的輸出維度、參數量、記憶體佔用……老闆問:「這份報告的哪些數字是真的,哪些需要特別注意?」

這題考的是「能不能正確解讀模型摘要表」,四個選項都涉及具體數字,每個都有一個細微的認知陷阱:

  • 選項 A:空間尺寸的數字(4×4 vs 7×7)
  • 選項 B:參數量是否包含偏差(bias)
  • 選項 C:模型大小是否等於訓練所需記憶體
  • 選項 D:層數統計與總參數量(正確)
03 對照

直接相信模型摘要的數字,容易犯哪些誤解?

  1. 把 AdaptiveAvgPool2d 的輸出大小記錯:VGG16 的 AdaptiveAvgPool2d(7, 7) 輸出是 7×7,不是 4×4。第一個全連接層的輸入是 512×7×7 = 25,088,而不是 8,192。這個數字錯了,整個後續的計算都會錯。
  2. 誤以為參數量只計算權重,不含偏差:PyTorch 的 summary() 預設包含偏差(bias)在內。Linear(25088, 4096) 的參數量 = 25088×4096(權重) + 4096(偏差) = 102,764,544,兩者都算進去了。
  3. 把模型檔案大小等同於訓練 GPU 記憶體:torchsummary 的 Estimated Total Size 只包含模型權重的靜態大小,實際訓練還需要:梯度(同等大小)、optimizer state(Adam 需要再乘 3 倍)、中間激活值、mini-batch 資料。真實訓練記憶體通常是模型大小的 4-10 倍。
  4. 層數統計不清楚:VGG16 的 features 模組有 13 個 Conv2d,classifier 模組有 3 個 Linear,加上 BatchNorm、ReLU、MaxPool2d 等,總共約 44 個操作,但可訓練層只有 13+3=16 層。
  5. 總參數量估算不準確:138,357,544 是 VGG16 原始版本(輸出 1000 類)的準確數字,來自 conv 層的約 14.7M 加上全連接層的約 123.6M。
04 解法

逐一比對:排除三個錯誤,確認選項 D

動物園工程師逐一驗證每個選項:

選項 A 的問題:VGG16 的 AdaptiveAvgPool2d 設定是 output_size=(7,7),不是 (4,4)。輸入 512×14×14 → 輸出 512×7×7。攤平後是 512×7×7 = 25,088,不是 8,192。這個選項的空間尺寸算錯了。

選項 B 的問題:Linear-33 的 102,764,544 已經包含 4,096 個偏差(bias)了,不是「只有權重」。PyTorch 的 summary() 預設把 bias 一起統計進參數量。

選項 C 的問題:Estimated Total Size 625 MB 只是權重佔用,不是訓練所需的全部 GPU 記憶體。訓練時還需要梯度(約 625 MB)、Adam 的 first/second moment(約 1.25 GB)、中間激活值(視 batch size 而定,可能幾百 MB 以上),一張 1 GB 的 GPU 遠遠不夠訓練。

選項 D 是正確的:VGG16 確有 13 層 Conv2d、3 層 Linear,總參數 138,357,544 ≈ 138.36M,這是文獻和程式碼都一致的數字。

這就是選項 D 講的:VGG16 包含 13 層卷積(conv)與 3 層全連接層(FC),總參數數目約為 138,357,544(約 138.36M)

技術版:VGG16 架構細節與 GPU 記憶體估算

中級考試大概率會考程式碼跟公式,所以這部分你還是要學。但如果現在學起來很痛苦,可以先跳過,等讀完其他題目回頭再來。

Step 1 純故事版(不出現公式)

想像 VGG16 是一棟 16 層樓的大廈(VGG16 的 16 就是指 16 個可訓練層)。前 13 層是標準間(卷積層),後 3 層是豪華套房(全連接層)。

模型摘要表就像大廈的「坪數報告」,告訴你每個房間多大。但「坪數報告上的數字」不等於「搬家時需要的貨車大小」:搬家還需要考慮家具(梯度)、包裝材料(optimizer state)、搬運路線(激活值快取)。

這道題要你分辨:哪個選項「正確讀懂了這份坪數報告」,哪個選項「把坪數和搬家成本搞混了」。

Step 2 中文 ↔ 程式碼對照
白話說法程式碼 / 數字
AdaptiveAvgPool2d 輸出大小nn.AdaptiveAvgPool2d((7, 7)) ← VGG16 設定
攤平後的向量維度512 × 7 × 7 = 25,088
Linear-33 的 bias 參數量4,096(包含在 102,764,544 內)
真實訓練記憶體估算模型 × 4(梯度)× 3(Adam) × 激活值
VGG16 可訓練層總數13 Conv2d + 3 Linear = 16 層
Step 3 符號角色表
AdaptiveAvgPool2d(output_size)
輸出固定空間大小的池化層,VGG16 設定 output_size=(7,7),不論輸入大小都輸出 7×7
bias
神經元的偏差項,每個輸出神經元一個,Linear(m, n) 的 bias 有 n 個
Estimated Total Size
torchsummary 只估算模型權重大小,不含梯度、optimizer state、激活值
optimizer state(Adam)
Adam 優化器需要儲存每個參數的一階矩(m)和二階矩(v),記憶體需求是模型的 2 倍
138.36M
VGG16 官方論文和 torchvision 一致的參數量,包含所有可訓練參數
Step 4 完整公式對應
選項 A 的錯誤:
  VGG16 的 AdaptiveAvgPool2d 設定 output_size=(7,7)
  輸出:512 × 7 × 7 = 25,088  (不是 512 × 4×4 = 8,192)

選項 B 的錯誤:
  Linear(25088, 4096) 的總參數 = 權重 + bias
  = 25088 × 4096 + 4096
  = 102,760,448 + 4,096
  = 102,764,544  (bias 已包含在內)

選項 C 的錯誤(GPU 記憶體估算):
  模型大小 = 138.36M × 4 bytes = 554 MB(fp32)
  梯度      ≈ 554 MB(同等大小)
  Adam m/v  ≈ 554 MB × 2 = 1,108 MB
  激活值    ≈ batch_size × 幾百 MB
  ─────────────────────────────
  訓練合計  >> 2.2 GB,遠超 1 GB

選項 D(正確):
  Conv2d 層數 = 13(Block 1-5 的卷積)
  Linear 層數 = 3(classifier 的三個全連接)
  總參數 = 138,357,544 ≈ 138.36M  ✓
Step 5 自我複述
  1. 為什麼 AdaptiveAvgPool2d 叫「自適應」(Adaptive)?它怎麼保證無論輸入多大都輸出 7×7?
  2. Linear(m, n) 總共有幾個參數?bias 有幾個?
  3. 用 Adam 訓練時,GPU 記憶體的組成有哪幾個部分?哪個最大?
  4. VGG16 的 16 是什麼意思?怎麼算出 16 個可訓練層?
  5. 如果把 batch size 從 32 改成 4,GPU 記憶體的哪個部分會減少最多?
05 陷阱

為什麼其他選項是錯的

選項 A AdaptiveAvgPool2d 輸出 4×4,輸入維度是 8192

字面在說什麼:池化層把特徵圖壓縮到 4×4,所以全連接層的輸入是 512×4×4 = 8192。

為什麼不對:VGG16 的 AdaptiveAvgPool2d 設定是 output_size=(7, 7),不是 (4, 4)。輸出是 512×7×7 = 25,088,第一個全連接層的輸入也是 25,088。選項 A 把 7×7 誤記成 4×4,導致後面的數字全部算錯。

誰會選錯:對 VGG16 的具體數字記憶模糊,只記得「最後要攤平」但不記得 7×7 這個細節,看到 4×4 = 16 × 512 = 8192 這個整齊的數字就覺得合理。

選項 B 102,764,544 只包含權重,不含偏差

字面在說什麼:模型摘要中 Linear-33 顯示的參數量只是純權重,bias 另外計算。

為什麼不對:PyTorch 的 torchsummary 和內建 summary() 都把 bias 計入每層的參數量。Linear(25088, 4096) 的 102,764,544 = 25,088×4,096(權重) + 4,096(bias)。bias 本身是可訓練參數,當然要統計在內。

誰會選錯:誤以為「參數量」只算「Weight 矩陣」,不含偏差項。事實上 bias 是全連接層不可或缺的一部分,幾乎所有框架的參數計數都包含它。

選項 C 625 MB 表示 1 GB GPU 足夠訓練

字面在說什麼:模型大小 625 MB,1 GB 的 GPU 記憶體就足夠訓練整個 VGG16。

為什麼不對:Estimated Total Size 只是推論(inference)時的模型權重大小。訓練時還需要:梯度(同等大小 ≈ 625 MB)、Adam optimizer 的 m 和 v(再加 1.25 GB)、每層的中間激活值(視 batch size 而定,幾百 MB 起跳)。實際訓練 VGG16 需要 4-8 GB 以上的 GPU 記憶體。

誰會選錯:看到「模型大小 625 MB」、「GPU 1 GB」直覺覺得「625 < 1000,裝得下」,沒考慮到訓練比推論需要多存梯度和 optimizer state。

06 變形

同個考點下次怎麼變形

變形 1 計算題

直覺:VGG16 的 Linear-36(第二個全連接層)輸入 4096、輸出 4096,它有多少個參數?

答案:4096 × 4096 + 4096 = 16,781,312 + 4,096 = 16,785,408 個。(如果題目說 16,781,312 = 只計權重,那就是忘了算 bias;正確含 bias 是 16,785,408)

變形 2 推論 vs 訓練記憶體

直覺:相同的 VGG16,推論(inference)和訓練(training)的 GPU 記憶體需求差多少?

答案:推論只需要模型權重(約 0.55 GB)+ 當前 batch 的激活值。訓練需要:模型(0.55 GB)+ 梯度(0.55 GB)+ Adam m/v(1.1 GB)+ 所有層的激活值快取(可達 1-3 GB,視 batch size)。大致比推論多 5-10 倍記憶體。

變形 3 架構修改影響

直覺:如果把 VGG16 的輸出從 1000 類改成 10 類(例如只分 10 種動物),總參數量怎麼變?

答案:只有 Linear-39(最後一層)改變:從 4096×1000+1000 = 4,097,000 變為 4096×10+10 = 40,970,減少約 4,056,030 個參數。總參數從 138.36M 降到約 134.3M,降幅約 3%。

變形 4 bias=False 的影響

直覺:如果把 Linear-33 設定為 bias=False,參數量會減少多少?

答案:減少 4,096 個(輸出維度數)。從 102,764,544 降到 102,760,448。比例上很小(0.004%),但對某些輕量化場景仍有意義。

變形 5 程式碼題

直覺:如何用程式確認 VGG16 的 AdaptiveAvgPool2d 輸出大小?

答案:輸入一個 dummy tensor:`x = torch.randn(1, 3, 224, 224); out = model.avgpool(x); print(out.shape)` → 輸出 `torch.Size([1, 512, 7, 7])`。或直接看 `model.avgpool` 的屬性:`model.avgpool.output_size` → `(7, 7)`。

07 延伸

想再往下看,這 5 個

出處

iPAS 經濟部產業人才能力鑑定 ・ 114 年第二梯次 iPAS AI 應用規劃師 中級 科目三 機器學習技術與應用 第 44 題

查看官方原文 PDF