---
# System prepended metadata

title: Hackmd

---

# Vanilla Net

在思考老師上禮拜提出的想法後，我認為我之後的實作方法如下:

傳統 CNN 會將萃取影像特徵的過程分為 5 個 stages，每一個 stage 都會將影像進行最大池化的動作，拿最經典的 ResNet50 舉例來說

- 輸入大小 (8, 3, 224, 224) # 表示 (batch size, in channels, height, width)
- 第一階段輸出大小 (8, 32, 112, 112)
- 第二階段輸出大小 (8, 64, 56, 56)
- 第三階段輸出大小 (8, 128, 28, 28)
- 第四階段輸出大小 (8, 256, 14, 14)
- 第五階段輸出大小 (8, 512, 7, 7)

最後再把輸出特徵圖透過平均池化後通過全連階層得到預測輸出。我認為我們可以把不同模型在這 5 個階段的輸出作融合。假設我們有一連串的 backbone，$f_1,f_2,\cdots,f_K$，假設每個 backbone 訓練完成後都會得到五個輸出特徵圖，我們記作 $f_{i1}, f_{i2}, f_{i3}, f_{i4}, f_{i5}$，我們的訓練流程如下

1. 訓練好 $f_{i}$
2. 將 $f_{\{i\}j}+f_{\{i+1\}j}$ 作為 $f_{\{i+1\}j}$ 的輸出和 $f_{{\{i+1\}}\{j+1\}}$ 的輸入

為了實現上述的方法，我打算在 CIFAR 10 和 CIFAR 100 資料上驗證，為了保證使用效率，我們用華為諾亞實驗室提出的 https://arxiv.org/abs/2305.12972 Vanilla net 方法，將他的模型作為基礎架構，延伸我們的想法