假設我們有一個圖像,其大小為 (H \times W \times C),其中 (H) 是圖像的高度,(W) 是圖像的寬度,(C) 是圖像的通道數(例如,RGB 圖像的通道數為 3)。
-
將圖像劃分成 patches:
- 假設我們將圖像劃分成大小為 (P \times P) 的 patches。
- 這樣我們就會得到 (\frac{H}{P} \times \frac{W}{P}) 個 patches。
-
將每個 patch 展開成一個向量:
- 每個 patch 的大小為 (P \times P \times C),展開成一個長度為 (P^2 \cdot C) 的向量。
-
應用線性嵌入(Linear Embedding):
- 使用一個線性變換將每個長度為 (P^2 \cdot C) 的向量映射到一個固定的維度,這個維度通常被稱為 embedding dimension,記為 (D)。
- 這個線性變換通常用一個權重矩陣來表示,形狀為 (D \times (P^2 \cdot C))。
所以,總結一下,patch embedding layer 的大小和形狀如下:
- 輸入大小:每個 patch 的大小為 (P^2 \cdot C)。
- 輸出大小:embedding dimension (D)。
- 權重矩陣的形狀:(D \times (P^2 \cdot C))。
如果具體舉個例子,假設一個圖像的大小為 (224 \times 224 \times 3),每個 patch 的大小為 (16 \times 16),embedding dimension (D) 為 768。
- 圖像被劃分成 (\frac{224}{16} \times \frac{224}{16} = 14 \times 14) 個 patches。
- 每個 patch 的大小為 (16 \times 16 \times 3 = 768)。
- patch embedding layer 的權重矩陣大小為 (768 \times 768)。