AI說書 - 從0開始 - 490 | Vision Transformer 特徵提取器實作

更新於 發佈於 閱讀時間約 4 分鐘

我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。


在原始的 ViT 論文中,這些區塊在被線性嵌入到適合 Transformer 的維度後,會直接輸入到 Transformer 模型中,亦即,這些區塊就是 Transformer 模型讀取的「詞」,因此,在 ViT 的上下文中,「處理後的區塊」指的是從原始圖像中創建的區塊,然後重塑為 Transformer 的二維輸入矩陣,這種轉換過程是 ViT 中數據預處理的重要部分。


針對 AI說書 - 從0開始 - 489 | Vision Transformer 特徵提取器核心理念說明 中的內容,實作為:

import torchvision.transforms as transforms 
import matplotlib.pyplot as plt

transform = transforms.Compose([transforms.Resize((224, 224)), transforms.ToTensor()])
pixel_values = transform(image).unsqueeze(0) # Add an extra dimension for the batch size
patch_size = 16
patches = pixel_values.unfold(2, patch_size, patch_size).unfold(3, patch_size, patch_size)


當中程式碼解說如下:

  • pixel_values 是一個四維的 Tensor,形狀為 (Batch_Size, Channels, Height, Width)
  • unfold(dim, size, step) 是 PyTorch 中的函數,用來從 Tensor 中提取滑動區塊,並形成一個較小的窗口,這裡的 dim 是維度,size 是窗口大小,step 是每次移動的步長
  • pixel_values.unfold(2, patch_size, patch_size) 對 Height 維度進行展開操作,將圖像高度分割成大小為 patch_size x patch_size 的區塊,並沿著高度方向以 patch_size 的步長滑動
  • unfold(3, patch_size, patch_size) 對 Width 維度進行展開操作,將圖像寬度分割成相同大小的區塊,並沿著寬度方向滑動,步長也為 patch_size
  • 經過兩次 .unfold 後,pixel_values 形狀會變成 (batch_size, channels, num_patches_height, num_patches_width, patch_size, patch_size)
留言
avatar-img
留言分享你的想法!
avatar-img
Learn AI 不 BI
234會員
736內容數
這裡將提供: AI、Machine Learning、Deep Learning、Reinforcement Learning、Probabilistic Graphical Model的讀書筆記與演算法介紹,一起在未來AI的世界擁抱AI技術,不BI。
Learn AI 不 BI的其他內容
2025/08/06
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 我們將建立一個特徵提取器模擬器,以說明圖像如何被分割為區塊並成為 Transformer 的輸入,Vision Transformer(ViT)模型將原始輸入圖像分割成
2025/08/06
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 我們將建立一個特徵提取器模擬器,以說明圖像如何被分割為區塊並成為 Transformer 的輸入,Vision Transformer(ViT)模型將原始輸入圖像分割成
2025/08/05
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 為了解釋 ViT 模型,首先先下載圖片,方便後續使用: from IPython.display import Image !curl -L https://raw.
Thumbnail
2025/08/05
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 為了解釋 ViT 模型,首先先下載圖片,方便後續使用: from IPython.display import Image !curl -L https://raw.
Thumbnail
2025/08/04
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 類似單詞的圖像序列可以適配於 Transformer 中,問題在於,它們仍然是圖像,Google Research 決定使用一種混合輸入模型來完成這項工作,如下圖所示:
Thumbnail
2025/08/04
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 類似單詞的圖像序列可以適配於 Transformer 中,問題在於,它們仍然是圖像,Google Research 決定使用一種混合輸入模型來完成這項工作,如下圖所示:
Thumbnail
看更多
你可能也想看
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 在 AI說書 - 從0開始 - 127 中提及: Transformer 的關鍵參數為: 原始 Transformer 模型中,左圖的 N = 6 原始 Tran
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 在 AI說書 - 從0開始 - 127 中提及: Transformer 的關鍵參數為: 原始 Transformer 模型中,左圖的 N = 6 原始 Tran
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 我們已經在 AI說書 - 從0開始 - 114 建立了 Transformer 模型,並在 AI說書 - 從0開始 - 115 載入權重並執行 Tokenizing,現
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 我們已經在 AI說書 - 從0開始 - 114 建立了 Transformer 模型,並在 AI說書 - 從0開始 - 115 載入權重並執行 Tokenizing,現
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 我們已經在 AI說書 - 從0開始 - 114 建立了 Transformer 模型。 現在我們來載入預訓練權重,預訓練的權重包含 Transformer 的智慧
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 我們已經在 AI說書 - 從0開始 - 114 建立了 Transformer 模型。 現在我們來載入預訓練權重,預訓練的權重包含 Transformer 的智慧
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 如 AI說書 - 從0開始 - 78 所述,經過 AI說書 - 從0開始 - 74 到目前為止的實驗,應可以漸漸感受到 Transformer 模型如何從數學層面漸漸往
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 如 AI說書 - 從0開始 - 78 所述,經過 AI說書 - 從0開始 - 74 到目前為止的實驗,應可以漸漸感受到 Transformer 模型如何從數學層面漸漸往
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 回顧 AI說書 - 從0開始 - 62 說:如果我參照原始 Google 釋出的 Transformer 論文的參數,在三個字的句子情況下,Single-Head At
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 回顧 AI說書 - 從0開始 - 62 說:如果我參照原始 Google 釋出的 Transformer 論文的參數,在三個字的句子情況下,Single-Head At
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 Transformers for Natural Language Processing and Computer Vision, 2024 這本書中講 Attenti
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 Transformers for Natural Language Processing and Computer Vision, 2024 這本書中講 Attenti
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 再度回到 Transformer 架構中的 Encoder 部分,如下圖所示: 我現在手上有的素材如下: Embedding 訓練方式:AI說書 - 從0開始
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 再度回到 Transformer 架構中的 Encoder 部分,如下圖所示: 我現在手上有的素材如下: Embedding 訓練方式:AI說書 - 從0開始
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 回顧我們在AI說書 - 從0開始 - 41中,提及 Transformer 的 Encoder 架構如下圖所示: 此外我已經在AI說書 - 從0開始 - 42中,
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 回顧我們在AI說書 - 從0開始 - 41中,提及 Transformer 的 Encoder 架構如下圖所示: 此外我已經在AI說書 - 從0開始 - 42中,
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News