手搓 ViT -- 并完成图像分类任务

最近在学习 Vision Transformer(ViT),跟着教程把模型从 patch embedding 到图像分类的流程实现了一遍,并整理成了一个项目,分享给同样在学习 ViT 的朋友。

先说明:这是个人学习笔记,并非原创教程或原创模型。 主要参考 Daniel Bourke 的 Learn PyTorch 第 08 章,在此感谢原作者。

项目包含什么?

  • 使用 PyTorch 搭建 patch embedding、多头自注意力、MLP 和 Transformer Encoder。

  • 为手写 ViT 加载 torchvision 的预训练主干权重,完成图片三分类。

  • 整理数据加载、训练、权重保存、单张图片预测等完整流程。

为了便于理解,我把分步骤的讲解与实验放在了 main.ipynb 中,同时提供模块化脚本,方便对照阅读和单独运行。

项目地址

👉 GitHub:手搓 ViT 学习笔记与代码

环境配置、文件说明、运行方式和注意事项已经写在仓库的 README 中,这里就不重复展开了。建议先阅读 README,再按顺序查看 main.ipynb,结合每一层的输入输出形状理解代码。

相关推荐
ZhuoAIStage2 小时前
舞台工艺检测表单自动生成:用 Python 与智能体 Skill 打通规范限值到可填表的数据流
python·第三方检测·舞台工艺·表单自动生成·规范性引用
MoRanzhi12033 小时前
第3篇 · 使用 PyQt5 实现 2048 桌面版游戏:MVC 架构与撤销和重做
python·mvc·pyqt5·桌面应用开发·gui开发·2048游戏·撤销与重做
蚰蜒螟3 小时前
从 Java SocketChannel 到 TCP 挥手:一次 close() 的完整调用链与引用计数解析
java·python·tcp/ip
Smoothcloud润云3 小时前
GPU算力平台跑知识库问答,模型回答总跑偏?先排查检索链路
人工智能·python·深度学习·gpu算力·gpu
mklpo1473 小时前
python3:如何按照实际执行需求导入模块,而不是启动时统一导入?(Python3.15)。2026-10-20
开发语言·人工智能·python
夜晚回家4 小时前
Python 赋值运算符详解 | 从 = 到 +=,一张记账单讲清复合赋值
开发语言·python
Maya动画技术4 小时前
pptx批量转png图片工具
python
MoRanzhi12034 小时前
第4篇 · 使用 PyQt5 实现 2048:平滑动画与性能优化
python·性能优化·qtimer·pyqt5·qpainter·gui动画·2048游戏
海姐软件测试5 小时前
Python 自动化与 AI 结合:基于 Jenkins 的回归验证实践
人工智能·python·自动化