Transformer实战-系列教程3:Vision Transformer 源码解读1

🚩🚩🚩Transformer实战-系列教程总目录

有任何问题欢迎在下面留言
本篇文章的代码运行界面均在Pycharm中进行
本篇文章配套的代码资源已经上传

Vision Transformer 源码解读1
Vision Transformer 源码解读2
Vision Transformer 源码解读3
Vision Transformer 源码解读4

1、整体解读

在这里插入图片描述

在文本任务中大量使用了Transformer 架构,因为文本数据是一个序列非常好的契合Transformer 架构。
可是如何将一张图像展开成一个序列呢?

将一个文本数据使用Transformer 进行特征提取需要把文本embbeding成一个向量

对于图像我们一样也可以embbeding成一个向量,所谓向量实际上不就是特征吗?把图像提取成特征,那就可以套上Transformer 架构,我们照样使用ConvNet把图像提取成特征再调整为向量就可以了。

一个词embbeding成向量,最多的是转化为768维的向量,对于图片使用一个卷积核对整体卷积一次就可以得到一个向量,如果我们使用512个卷积核就可以得到512维的向量,这样就可以和NLP任务对上了。

因此使用Transformer架构做CV任务,只需要加上一层embbeding就可以套用Transformer架构了,一次卷积就可以得到图像全局的特征,当然也要加上位置编码得到位置信息。

有了向量序列,就可以进行self-Attention的堆叠了

2、VIT项目

在这里插入图片描述
运行参数:

--name cifar10-100_500 
--dataset cifar10 
--model_type ViT-B_16 
--pretrained_dir checkpoint/ViT-B_16.npz

容易出错python包:

pip install protobuf==3.20.0 -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install numpy==1.19.5 -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install ml-collections -i https://pypi.tuna.tsinghua.edu.cn/simple

我是装了这三个就能正常运行了

3、VIT项目debug

配置参数部分就不需要仔细去看了,遇到哪个参数的时候回去去找就行了

找到train.py------main()函数
到第一个可执行的代码部分开启debug模式,逐行查看

# Setup CUDA, GPU & distributed trainingif args.local_rank == -1:device = torch.device("cuda" if torch.cuda.is_available() else "cpu")args.n_gpu = torch.cuda.device_count()else:  # Initializes the distributed backend which will take care of sychronizing nodes/GPUstorch.cuda.set_device(args.local_rank)device = torch.device("cuda", args.local_rank)torch.distributed.init_process_group(backend='nccl',timeout=timedelta(minutes=60))args.n_gpu = 1args.device = device

单机单卡、单机多卡、没有安装GPU则执行CPU
指定训练设备

# Setup logginglogging.basicConfig(format='%(asctime)s - %(levelname)s - %(name)s - %(message)s',datefmt='%m/%d/%Y %H:%M:%S',level=logging.INFO if args.local_rank in [-1, 0] else logging.WARN)logger.warning("Process rank: %s, device: %s, n_gpu: %s, distributed training: %s, 16-bits training: %s" %(args.local_rank, args.device, args.n_gpu, bool(args.local_rank != -1), args.fp16))

设置打印日志的格式

# Set seedset_seed(args)
def set_seed(args):random.seed(args.seed)np.random.seed(args.seed)torch.manual_seed(args.seed)if args.n_gpu > 0:torch.cuda.manual_seed_all(args.seed)

设置所有的随机种子,为什么args.seed=42,远古大神们都是用的42🤣

# Model & Tokenizer Setupargs, model = setup(args)
def setup(args):# Prepare modelconfig = CONFIGS[args.model_type]num_classes = 10 if args.dataset == "cifar10" else 100model = VisionTransformer(config, args.img_size, zero_head=True, num_classes=num_classes)model.load_from(np.load(args.pretrained_dir))model.to(args.device)num_params = count_parameters(model)logger.info("{}".format(config))logger.info("Training parameters %s", args)logger.info("Total Parameter: \t%2.1fM" % num_params)print(num_params)return args, model

在这里插入图片描述
看一下都返回了哪些参数,用这些参数初始化一个模型

setup()函数解读,debug模式:

  1. 将所有的参数全部读进来
  2. 数据类别10个
  3. 使用VisionTransformer类构造模型
  4. 加载预训练模型
  5. 模型进入GPU
  6. 统计模型参数量
  7. 设置日志信息
  8. 返回参数和模型

Vision Transformer 源码解读1
Vision Transformer 源码解读2
Vision Transformer 源码解读3
Vision Transformer 源码解读4

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/668487.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

kubesphere部署k8s-v1.23.10

功能: 🕸 部署 Kubernetes 集群 🔗 Kubernetes 多集群管理 🤖 Kubernetes DevOps 🔎 云原生可观测性 🧩 基于 Istio 的微服务治理 💻 应用商店 💡 Kubernetes 边缘节点管理 &#x1…

latex论文写作遇到的问题

图一: 图二: 图三: 使用模版的时候将图一转为图二:在.tex文件开头导言部分加上: \usepackage{titletoc} \titlecontents{section}[0pt]{\addvspace{1.5pt}\filright\bf}{\contentspush{第\thecontentslabel\ 章\qu…

2024.2.4 awd总结

防御阶段 感觉打了几次awd,前面阶段还算比较熟练 1.ssh连接 靶机登录 修改密码 [root8 ~]# passwd Changing password for user root. New password: Retype new password: 2.xftp连接 备份网站源码 我觉得这步还是非常重要的,万一后面被删站。。…

【幻兽帕鲁】如何快速部署私人服务器

看了许多关于如何部署服务器的,大部分都是要买阿里云或者腾讯云的服务器并且至少四核以上才能保证流畅运行。 但是对于想搭建私服但又没有技术的小白,确实是有点难度了。购买云服务器后还要配置服务器,配置OpenVPN、PalServer,doc…

解锁亚马逊测评防关联新技术:亚马逊鲲鹏系统

在亚马逊测评的过程中,一直以来都存在着一些技术难题,特别是在模拟买家行为时需要考虑诸多因素,包括关键词搜索、IP地址切换以及防关联等。然而,最新的技术突破,亚马逊鲲鹏系统正是为了解决这些问题而诞生的。 首先&am…

No matching client found for package name ‘com.unity3d.player‘

2024年2月5日更新 下面的一系列操作最终可能都无用,大致这问题出现原因是我在Unity采用了Android方式接入Firebase,而Android接入实际上和Unity接入方式有配置上的不一样,我就是多做了几步操作如下。https://firebase.google.com/docs/androi…

【Java】Redis入门

1. Redis入门 1.1 Redis简介 Redis是一个基于内存的key-value结构数据库。Redis 是互联网技术领域使用最为广泛的存储中间件。 官网:https://redis.io 中文网:https://www.redis.net.cn/ key-value结构存储: 主要特点: 基于内…

docker复习笔记01(小滴课堂)安装+部署mysql

查看内核版本。 关闭防火墙: 查看docker版本: 下载阿里yum源: 再看一下yum版本都有哪些: 我们可以看的docker-ce了。 安装它: 设置docker服务开机启动: 更新日志文件: 启动docker: …

CSS写渐变边框线条

box-sizing: border-box; border-top: 1px solid; border-image: linear-gradient(to right, red, blue) 1;

STM32F407移植OpenHarmony笔记9

继上一篇笔记,已经完成liteos内核的基本功能适配。 今天尝试启动OHOS和XTS兼容性测试。 如何启动OHOS? OHOS系统初始化接口是OHOS_SystemInit(void),在内核初始化完成后,就能调用。 extern void OHOS_SystemInit(void); OHOS_Sys…

JupyterLab 更换内核 使用 conda 虚拟环境

未有conda虚拟环境default先创建环境 conda create -n default python3.8 ipykernel已有conda虚拟环境default激活后安装ipykernel conda activate defaultpip install ipykernel将虚拟环境写入 jupyter notebook 的 kernel 中 python -m ipykernel install --user --name 虚…

C语言小游戏:贪吃蛇(游戏开发的环境和功能介绍)

❀❀❀ 文章由不准备秃的大伟原创 ❀❀❀ ♪♪♪ 若有转载,请联系博主哦~ ♪♪♪ ❤❤❤ 致力学好编程的宝藏博主,代码兴国!❤❤❤ 生命不停,学习不止。铁汁们,我是大伟,欢迎来到大伟的游戏时间&#xff0c…

一次Kubernetes Pod内存异常导致的测试环境耗时异常问题排查过程

概述 在使用公司内部后台系统测试环境时发现一个请求加载慢的问题,简简单单的列表,查询MongoDB数据库,测试环境不过几百上千条数据而已,请求耗时居然高达5~6秒: 作为对比,生产环境的请求响应截图如下&…

【Java程序设计】【C00194】基于SSM的高校财务处理管理系统(论文+PPT)

基于SSM的高校财务处理管理系统(论文PPT) 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于ssm的高校从财务处理系统 本系统分为财务和管理员2个功能模块。 财务:财务登录高校财务处理系统后,能对首页、个人中心…

链表经典算法(+OJ刷题)

文章目录 前言一、移除链表元素二、链表的中间节点三.反转链表四.合并两个有序链表五.分割链表六.环形链表的约瑟夫问题总结 创作不易,点赞收藏一下呗!!! 前言 在上一节,我们介绍了单链表的增,删&#xff…

docker手动迁移镜像

1&#xff0c;将镜像保存在本地 docker save 镜像名称:版本号 > 镜像名称.tar 2&#xff0c;下载镜像 通过 ftp 工具或者命令&#xff0c;下载到本地 3&#xff0c;上传镜像到目标 docker 所在服务器 4&#xff0c;导入镜像 docker load < 镜像名称.tar

Electron实战(一):环境搭建/Hello World/打包exe

文章目录 Electron安装Node.jsNodeJs推荐配置开始Electron项目创建index.js文件创建src目录运行打包生成exe生成安装包踩坑 下一篇Electron实战(二)&#xff1a;将Node.js和UI能力&#xff08;app/BrowserWindow/dialog)等注入html Electron Electron是一个使用JavaScript, HT…

AI-数学-高中-22-tanx的图像与性质

原作者视频&#xff1a;三角函数】9tanx的图像与性质&#xff08;易中档&#xff09;_哔哩哔哩_bilibili 做题时注意先画图&#xff0c;再计算。

RabbitMQ(保姆级教程)

RabbitMQ学习 基础 1. 同步通信和异步通信 同步调用 下一步动作必须依赖上一步 异步调用 通知到位就行&#xff0c;不对消费者做强制要求&#xff0c;只要求最终一致性就行 2. MQ技术选项 消息先进先出&#xff0c;RabbitMQ默认有序 Erlang 是面向并发&#xff0c…

Allegro如何把Symbols,shapes,vias,Clines,Cline segs等多种元素一起移动

Allegro如何把Symbols,shapes,vias,Clines,Cline segs等多种元素一起移动 在用Allegro进行PCB设计时,有时候需要同时移动某个区域的所有元素,如:Symbols,shapes,vias,Clines,Cline segs等元素。那么如何操作呢? 首先就是把Symbols,shapes,vias,Clines,Cline …