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

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

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

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 training
    if 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/GPUs
        torch.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 = 1
    args.device = device

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

# Setup logging
    logging.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 seed
    set_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 Setup
    args, model = setup(args)
def setup(args):
    # Prepare model
    config = CONFIGS[args.model_type]

    num_classes = 10 if args.dataset == "cifar10" else 100

    model = 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. 返回参数和模型

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2、安全开发-Python-Socket编程端口探针域名爆破反弹Shell编码免杀

用途:个人学习笔记,欢迎指正! 目录 主要内容: 一、端口扫描(未开防火墙情况) 1、Python关键代码: 2、完整代码:多线程配合Queue进行全端口扫描 二、子域名扫描 三、客户端,服务端Socket编程通信cmd命…

vue中使用html2canvas配合jspdf导出pdf(以及在导出时遇到的导出样式问题)

指定页面中导出为pdf格式并打包,使用html2canvas先转为图片格式,在利用jspdf转为pdf,最后下载打包为本地压缩包 yarn add html2canvas yarn add jspdf1. 注册一个插件并挂载 import html2Canvas from html2canvas import JsPDF from jspdf …

90.网游逆向分析与插件开发-游戏窗口化助手-项目需求与需求拆解

内容参考于:易道云信息技术研究院VIP课 上一个内容:实现物品使用策略的功能-CSDN博客 项目需求: 在游戏窗口化时,可以在游戏之外弹出一个窗口,可以隐藏或者显示游戏窗口,显示游戏人物的基本状态&#xff…

天地伟业接入视频汇聚/云存储平台EasyCVR详细步骤

安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快,可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等,以及支持厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等。平台既具备传统安…

Quartus IP学习之ISSP(In-System Sources Probes)

一、ISSP IP概要: ISSP:In-System Sources & Probes Intel FPGA IP 作用: 分为In-System Sources与In-System Probesn-System Sources,输入端,等价于拨码开关,通过输入板载FPGA上的拨码开关状态改变…

Python基础知识:Python序列以及序列的索引、切片、相乘和相加

索引 索引就是序列中的每个元素所在的位置,可以通过从左往右的正数索引,也可以通过从右往左的负数索引。 从左往右的正数索引:在python序列中,第一个元素的索引值为0,第二个元素的索引值为1,以此类推&…

urllib2和cookielib的线程安全性

使用 urllib2 和 cookielib 发送 HTTP 请求和处理 cookies 的一些基本技巧。你可以根据具体需求进一步定制和扩展这些代码。注意,在 Python 3 中,urllib2 被拆分成 urllib.request 和 http.cookiejar 模块,但使用方式类似。下面就是我遇到的这…

Docker存储空间清理

不知不觉服务器存储空间被Docker掏空了… 查看Docker空间占用情况 使用docker system df命令,可以加 -v 查看详情 清理Docker不需要的内容 使用docker system prune -a命令清理Docker 所有停止的容器所有没有被使用的networks所有没容器的镜像所有build cache …

手工方式安装19.22RU

使用手工方式打RU19.22 参考文档: Supplemental Readme - Grid Infrastructure Release Update 12.2.0.1.x / 18c /19c (Doc ID 2246888.1) 操作步骤: 1 Stop the CRS managed resources running from DB homes. 2 Run the pre root script. 3 Patch G…

Korean Male Character- 19th Century

韩国男性角色- 19世纪资产包! 此包包含5个独特的角色模型和8个动画资源。 5个角色模型 1. 韩国男性_1 2. 韩国男选手_2 3. 韩国男_3 4. 韩国男式_框架 5. 韩国男选手_Ricksaw 共 8 个动画 :■ 站 ■ 步行 ■ 前俯 ■ 坐 ■ 木架_展台 ■ 独木桥_行走 ■ 框架_支架 ■…

Juc06_Lock8锁问题、字节码层面看Synchronized、反编译synchronized锁

1、Lock8 8锁问题 标准访问有 a、b 两个线程,请问先打印邮件还是短信sendEmail 方法暂停 3 秒钟,请问先打印邮件还是短信新增一个普通的 hello 方法,请问先打印邮件还是 hello有两部手机,请问先打印邮件还是短信两个静态同步方法…

中国大学生计算机设计大赛与大数据应用主题赛

中国大学生计算机设计大赛 与大数据应用主题赛 中国大学生计算机设计大赛(简称“大赛”或4C)始筹于2007年,首届于2008年,已经举办了16届80场赛事。是我国高校面向本科生最早的赛事之一,由教育部计算机类教指委发起举…

CTF-MISC图片求正确宽高破解和修改总结

CTF-MISC图片求正确宽高破解和修改总结 文章目录 CTF-MISC图片求正确宽高破解和修改总结图片宽高破解根据像素求宽高脚本求正确宽高 如何修改宽高010 Editor修改 图片宽高破解 根据像素求宽高 以青少年CTFmisc 简简单单的题目为例: 我鼠标右侧属性查看相册 右键属…

【项目日记(八)】第三层: 页缓存的具体实现(下)

💓博主CSDN主页:杭电码农-NEO💓   ⏩专栏分类:项目日记-高并发内存池⏪   🚚代码仓库:NEO的学习日记🚚   🌹关注我🫵带你做项目   🔝🔝 开发环境: Visual Studio 2022 项目日…

国内外b2b网站大全,免费b2b网站平台有哪些?

B2B网站大全平台主要是提供各类B2B网站的免费收录和分类,涵盖了外贸、机械、建筑、化工、五金、电工、农林、仪器、食品、能源、服装、冶金、电子等,这些B2B网站可以帮助中小企业和中国制造业提供在线采购、供求信息,招标信息。 免费B2B网站分…

[Tomcat问题]--使用Tomcat 10.x部署项目时,出现实例化Servlet类[xxx]异常

[Tomcat问题]–使用Tomcat 10.x部署项目时,出现实例化Servlet类[xxx]异常 本片博文在知乎同步更新 环境 OS: Windows 11 23H2Java Version: java 21.0.1 2023-10-17 LTSIDE: IntelliJ IDEA 2023.3.3Maven: Apache Maven 3.9.6Tomcat: Tomcat 10.1.18 ReleasedSer…

2024年【安全员-B证】考试资料及安全员-B证模拟考试题库

题库来源:安全生产模拟考试一点通公众号小程序 2024年安全员-B证考试资料为正在备考安全员-B证操作证的学员准备的理论考试专题,每个月更新的安全员-B证模拟考试题库祝您顺利通过安全员-B证考试。 1、【多选题】《中华人民共和国安全生产法》规定&#…

C语言:详解操作符(上)

摘要: 本篇,我们将学习C语言中操作符的相关内容,操作符是C语言中重要的元素之一,在我们的代码中处处都有,下面我们将详细介绍操作符的相关内容,并结合一些代码例题加深印象。 目录 一、操作符的分类及介绍 …

黑马头条D1 导学

我是南城余!阿里云开发者平台专家博士证书获得者! 欢迎关注我的博客!一同成长! 一名从事运维开发的worker,记录分享学习。 专注于AI,运维开发,windows Linux 系统领域的分享! 知…

ChatGPT实战100例 - (15) 还不会写 Stable Diffusion (SD) 绘画提示词?没关系,ChatGPT帮你搞定

文章目录 ChatGPT实战100例 - (15) 还不会写 Stable Diffusion (SD) 绘画提示词?没关系,ChatGPT帮你搞定一、把场景描述转为镜头语言二、把镜头语言转换为Prompt三、把Prompt转换为图片 ChatGPT实战100例 - (15) 还不会写 Stable Diffusion (SD) 绘画提示…