PyTorch实现Vision Transformer:图像分类完整代码解析

发布时间:2026/8/29 8:40:04

PyTorch实现Vision Transformer:图像分类完整代码解析
之前在做视觉分类任务时第一次看到 ViTVision Transformer的完整实现最大的感受是Transformer 本身并不复杂但代码里混杂了 Patch Embedding、Positional Encoding、Multi-Head Attention、LayerNorm、Dropout 这些概念之后读起来就变得很吃力。尤其是从 CNN 转向 Transformer 的时候思维上会出现几个坎图像怎么变成序列Patch 是什么Forward 过程到底怎么流动为什么最后接的是一个 Classification Head本篇就用一套完整可运行的 PyTorch 代码把 ViT 从输入图像到最终分类输出逐步拆开。所有概念都结合代码片段讲解尽量不做纯理论堆砌。适用人群包括刚入门 Transformer 的算法工程师、准备复现 ViT 论文的在校学生、以及想把 Vision Transformer 用到自己项目里但还没完全搞清楚细节的开发者。通过本文你会掌握以下几个关键点Transformer 的核心模块Embedding、Multi-Head Attention、FFN、LayerNorm。Patch Embedding 如何把图像变为序列。ViT 的完整 Forward 流程。用 PyTorch 从零实现一个小型 ViT并跑通一次训练和推理。1. 背景与核心概念为什么视觉任务也用 Transformer1.1 从 CNN 到 Transformer视觉模型发生了什么变化在 Transformer 出现之前图像分类任务基本由 CNN 主导。CNN 的思想是局部感受野和滑动窗口通过卷积核在图像上滑动提取局部特征再经过池化逐步扩大感受野。对于图像这种具有局部相关性的数据CNN 的自然归纳偏置非常有效。但 CNN 也有局限它更擅长捕捉局部信息要建模长距离依赖关系需要堆叠很多层卷积或者引入注意力机制而且卷积操作对平移、缩放等具有一定不变性但整体架构设计的自由度反而受限。Transformer 一开始是为 NLP 设计的。它的核心是 Self-Attention能直接建模序列中任意两个位置之间的依赖关系距离不再是问题。于是研究者开始思考一个问题图像能不能也看成序列这就是 ViTVision Transformer的核心思路把图像切分成一个个 Patch每个 Patch 拉平成一个向量再把这些向量当作 Token 输入 Transformer。这样图像就被转换成了“句子”Transformer 可以像处理词向量一样处理图像块。1.2 ViT 的基本流程概览ViT 的完整流程可以拆成如下几步输入一张图像例如 224×224×3。把图像切分成固定大小的 Patch例如每个 Patch 是 16×16。每个 Patch 拉平成向量经过线性映射得到 Patch Embedding。在序列最前面加上一个可学习的 [CLS] Token用于最后分类。给每个 Token 加上位置编码Positional Encoding。输入 Transformer Encoder经过多层 Self-Attention 和 MLP。取出 [CLS] Token 对应的输出经过 Classification Head 得到分类结果。后面所有代码都是围绕这条主流程展开的。2. 环境准备与依赖说明本文代码基于 PyTorch示例环境如下Python 3.8PyTorch 1.13 或 2.xtorchvision用于数据集加载matplotlib用于可视化非必须操作系统Windows / Linux / macOS 均可版本不需要完全一致PyTorch 2.x 在 API 层面与 1.x 差异不大文章代码以常用 API 为准。如果你的环境是 CPU也可以运行只是训练速度会慢。安装依赖的命令pip install torch torchvision matplotlib如果你使用 GPU 版本请根据自己的 CUDA 版本到 PyTorch 官网选择对应安装命令。

相关新闻

Python零基础学习路线:从环境搭建到实战项目全攻略

Python零基础学习路线:从环境搭建到实战项目全攻略

2026/8/29 8:40:04

先说一个判断:Python 零基础教程这类内容,最不缺的就是“收藏夹吃灰”版本。368 集整套课程,收藏起来很容易,真正打开学完前 10 集的反而没多少人。问题通常不是教程不够细,而是学习路线没有拆开,环境装到一…

Codex接入DeepSeek V4:40轮提示词构建数据分析Agent

Codex接入DeepSeek V4:40轮提示词构建数据分析Agent

2026/8/29 8:40:04

之前在业务迭代中做数据分析,最耗时的往往不是写 SQL,也不是画图,而是反复对齐口径、调试清洗逻辑、改报告。团队里每个人处理数据的方式都不一样,产出的结果经常对不上。后来我把 DeepSeek V4 接入 Codex,用提示词驱动…

DeepSeek-V4潜伏推理技术拆解:思考链走向隐空间,优化推理延迟与成本

DeepSeek-V4潜伏推理技术拆解:思考链走向隐空间,优化推理延迟与成本

2026/8/29 8:30:04

DeepSeek-V4 Latent Reasoning 这个方向最近在社区里引起了不少讨论。它和常见的“让模型多思考一会儿”不一样,是把思考过程从显式的文本链拆掉,直接挪到 latent space 里完成。简单说,就是不让模型把每一步推理都写成 token,而是…

汽车租赁管理系统源码解析:从数据库设计到SpringBoot实战

汽车租赁管理系统源码解析:从数据库设计到SpringBoot实战

2026/8/29 9:50:07

简介:在企业级Java Web开发中,业务系统的核心往往不只是增删改查,更在于事务控制、状态流转和模块间的数据一致性。汽车租赁管理系统作为典型的业务闭环案例,完整覆盖了客户管理、车辆管理、订单计费、财务结算等关键环节&#xf…

呼吸疾病研究必备:小鼠急性肺损伤模型(ALI)构建手册与多维度评价体系

呼吸疾病研究必备:小鼠急性肺损伤模型(ALI)构建手册与多维度评价体系

2026/8/29 9:50:07

小鼠急性肺损伤模型一.简介:急性肺损伤(ALI)及其最严重的表现形式——急性呼吸窘迫综合征(ARDS),是临床上由肺炎、脓毒症、创伤等多种因素引发的危重病症,病死率高达30%-50%。其核心…

Crawl4AI:异步网页爬虫,3 个场景拿干净 Markdown

Crawl4AI:异步网页爬虫,3 个场景拿干净 Markdown

2026/8/29 9:50:07

Crawl4AI:异步网页爬虫,3 个场景拿干净 Markdown 【免费下载链接】crawl4ai 🚀🤖 Crawl4AI: Open-source LLM Friendly Web Crawler & Scraper. Dont be shy, join here: https://discord.gg/jP8KfhDhyN 项目地址: https://…

Ubuntu 26.04安装与配置完整指南:从U盘启动到开发环境搭建

Ubuntu 26.04安装与配置完整指南:从U盘启动到开发环境搭建

2026/8/29 9:50:07

很多开发者第一次接触 Linux,不是从服务器开始的,而是从“想换掉 Windows 开发环境”开始的。装 Ubuntu 这件事,看起来只是下载一个镜像、写进 U 盘、点几下鼠标,但真正动手时,很多人会卡在启动盘不识别、分区不敢动、…

模型下载安全指南:从供应链风险到安全加载实践

模型下载安全指南:从供应链风险到安全加载实践

2026/8/29 9:50:07

你大概率经历过这样的场景:一个预训练模型不错,README 里写着“SOTA”“零样本 SoTA”,模型卡干净整洁,下载量几千,你把它拉下来准备微调,结果加载时一段 Python 代码借着你服务器的算力开始“额外工作”。…

模素数域高斯消元:从POJ 2065 SETI题看算法原理与工程实现

模素数域高斯消元:从POJ 2065 SETI题看算法原理与工程实现

2026/8/29 9:40:07

1. 项目概述:从一道经典算法题看高斯消元的工程实践 最近在整理一些老牌的在线判题系统(Online Judge)上的经典题目,POJ 2065 “SETI” 这道题又一次进入了我的视野。这不仅仅是一道算法题,它更像是一个桥梁&#xff0…

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

2026/8/27 11:10:02

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

2026/8/27 7:25:23

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

2026/8/28 7:34:42

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

四款热门降AI工具测评:研究生和本科生怎么选?

四款热门降AI工具测评:研究生和本科生怎么选?

2026/8/29 0:09:39

马上要交论文了,最近真的被论文ai率折磨的够呛。 明明查重都没问题了,但是ai率就是居高不下,崩溃了,明明都是我自己写的,天杀的,明明都是我亲生的啊 改来改去,终于给我搞出一套完美的降ai方案…

论文降AI率免费攻略:自查、提示词与工具推荐

论文降AI率免费攻略:自查、提示词与工具推荐

2026/8/29 0:09:39

马上要交论文了,最近真的被论文ai率折磨的够呛。 明明查重都没问题了,但是ai率就是居高不下,崩溃了,明明都是我自己写的,天杀的,明明都是我亲生的啊 改来改去,终于给我搞出一套完美的降ai方案…

北京GEO优化服务商推荐:预算型企业如何选北京GEO优化服务商?

北京GEO优化服务商推荐:预算型企业如何选北京GEO优化服务商?

2026/8/29 0:09:39

前言:预算有限的企业更关心投入能否形成可持续的品牌资产。评估北京GEO优化服务商时,不能只比较单篇内容或单月报价,还要看是否能够把问题词、官网、信源和监测串成完整链路。本期重点放在预算配置、试点范围和交付边界,帮助企业先…

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

2026/8/28 7:35:26

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…

导师推荐!2026最新AI论文工具测评与实用推荐

导师推荐!2026最新AI论文工具测评与实用推荐

2026/8/28 7:34:51

2026年真正好用的AI论文工具,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

告别游戏崩溃:XCOM 2模组管理器的智能革命

告别游戏崩溃:XCOM 2模组管理器的智能革命

2026/8/28 7:34:35

告别游戏崩溃:XCOM 2模组管理器的智能革命 【免费下载链接】xcom2-launcher The Alternative Mod Launcher (AML) is a replacement for the default game launchers from XCOM 2 and XCOM Chimera Squad. 项目地址: https://gitcode.com/gh_mirrors/xc/xcom2-lau…