Vision Transformer模块框架图
时间: 2025-05-31 19:56:06 浏览: 28
### Vision Transformer Architecture Diagram
Vision Transformer (ViT) 的架构图通常展示了一个基于自注意力机制的网络结构,该结构将图像划分为多个固定大小的补丁(patch),并将这些补丁作为输入传递给一系列变压器块[^2]。下图为典型的 ViT 架构示意图:
#### 图形化表示
以下是 ViT 的基本架构流程图说明:
1. **图像分块(Image Patching)**
输入图像被分成若干个不重叠的小块(称为patches),每个patch会被展平成一维向量。
2. **线性嵌入(Linear Embedding)**
每个 patch 被映射到一个高维度空间,通过可训练参数矩阵完成这一过程。
3. **位置编码(Positional Encoding)**
添加位置编码以保留像素的空间关系信息,因为 Transformers 本身不具备对顺序的理解能力。
4. **Transformer Encoder Blocks**
多层 Transformer 编码器堆叠在一起形成核心部分。每一层都由一个多头自注意(Multi-head Self-Attention, MSA)子层和一个前馈神经网络(Feed Forward Network, FFN)组成[^1]。
5. **分类标记(Class Token)** 和 **池化操作(Pooling Operation)**
在序列开头加入特殊 token (`[CLS]`) 来代表整个图片特征;经过所有 layers 后提取此 token 输出送至全连接层做最终预测。

> 注:由于无法直接提供外部链接或图形文件,请访问相关论文或者教程网站获取更精确版本的图表资源。
```python
import torch
from torchvision import transforms
from transformers import ViTModel
# 加载预训练模型
model = ViTModel.from_pretrained('google/vit-base-patch16-224-in21k')
# 定义数据变换方式
preprocess = transforms.Compose([
transforms.Resize((224, 224)),
transforms.ToTensor(),
])
image_tensor = preprocess(image).unsqueeze(0) # 假设 'image' 是 PIL.Image 对象
with torch.no_grad():
outputs = model(image_tensor)
last_hidden_states = outputs.last_hidden_state
```
上述代码片段演示了如何加载预先训练好的 ViT 模型以及对其进行推理的过程。
---
阅读全文
相关推荐


















