pytorch笔记:transformer 和 vision transformer

news2024/11/26 22:42:38

来自B站视频,API查阅,TORCH.NN

  • seq2seq 可以是 CNN,RNN,transformer
    在这里插入图片描述
  • nn.Transformer 关键源码:
encoder_layer = TransformerEncoderLayer(d_model, nhead, dim_feedforward, dropout,
                                                    activation, layer_norm_eps, batch_first, norm_first,
                                                    **factory_kwargs)
encoder_norm = LayerNorm(d_model, eps=layer_norm_eps, **factory_kwargs)
self.encoder = TransformerEncoder(encoder_layer, num_encoder_layers, encoder_norm)



decoder_layer = TransformerDecoderLayer(d_model, nhead, dim_feedforward, dropout,
                                                    activation, layer_norm_eps, batch_first, norm_first,
                                                    **factory_kwargs)
decoder_norm = LayerNorm(d_model, eps=layer_norm_eps, **factory_kwargs)
self.decoder = TransformerDecoder(decoder_layer, num_decoder_layers, decoder_norm)



memory = self.encoder(src, mask=src_mask, src_key_padding_mask=src_key_padding_mask)
output = self.decoder(tgt, memory, tgt_mask=tgt_mask, memory_mask=memory_mask,
                     tgt_key_padding_mask=tgt_key_padding_mask,
                     memory_key_padding_mask=memory_key_padding_mask)
# return output
  • src_mask 是 padding 的 mask,tgt_mask 是为了 mask 掉目标句子的后续,memory_mask 是 decoder 第二个 mha 的 mask
  • The Annotated Transformer 有详细讲解
  • PositionalEncoding 是 n x d 的位置矩阵,其中 n 是句子的长度,d 是 embedding 后的长度,即 d_model,实际和 embedding 后的输入shape一样,因为要直接相加

构造一个矩阵可以通过 torch.zeros(),再往里面填充内容

请添加图片描述

Var(X)=E(X2)-[E(X)]2,因此E(X)=0,Var(X)=1时,E(X2)=1。独立随机变量满足 E(XY)=E(X)E(Y)=0,Var(XY)=E(X2)E(Y2)-[E(XY)]²=1,长度为 d 的向量内积就是 d 个E(X)=0,Var(X)=1 的变量相加,因此点集均值是0,方差为 d

  • transformer 的归纳偏置(人为经验)少,泛化能力好,但相对来说,数据量的要求与先验假设的程度成反比
  • transformer 核心计算在于计算注意力机制,它是平方复杂度
  • FFN 和 Mha 的关系类似于 depth-wise convolution 和 point-wise convolution 的关系,FFN 做通道的信息融合,Mha 做空间位置的信息融合
  • Transformer 使用 Teacher Forcing 进行训练
  • CrossEntropyLoss 需要的输入是全连接层的输出,不需要经过 softmax,且第二维必须是 class
  • vision transformer (文章介绍得很详细,很推荐看) 的基本单位是像素点,像素点数量多且信息量少,不能直接类似序列建模以一个字为单位算注意力,否则计算量大且效果差,因此以 patch 为基本单位

图片转换成 patch 有两种理解:直接分片和CNN处理

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

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

相关文章

杂谈 | 人类微生物组研究:解析挑战与前景

谷禾健康 人类微生物组研究正在从描述关联发展到了解整个微生态对人类的影响。虽然存在挑战,但在应用数据驱动的微生物组诊断和干预方面正在取得进展,这可能会在未来十年内带来精准医学的突破。 本文我们来探讨关于微生物组的研究进展及其对人类健康的影…

Windows10配置Kiosk(展台)模式

Windows10配置Kiosk(展台)模式 新建Kiosk专用用户 进入windows设置->账户->家庭与其他用户,点击’将其他人添加到这台电脑’ 在弹出的对话框里,点击我没有这个人的登录信息,然后添加一个没有Microsoft账户的用…

什么是眼图

眼图是指示波器用余辉方式将捕获的波形按每3bit的形式累积叠加显示采集到的串行信号的比特位的结果,叠加后的图形形状看起来和眼睛很像 眼图有很多参数,可以用来量化信号的质量,例如: 眼高:指眼图中最大和最小电压之差…

WOT全球技术创新大会2023在京召开:创新不止,实战为王

AIGC、大模型、大算力异常火爆的背后,其应用场景是什么、商业实践有何规律可循?多云实践、业务架构演进、研发效能等看似“老生常谈”的技术热点,在崇尚业务创新的当前时代有何新的发展趋势? 6月16-17日,51CTO集结50来…

android存储2--初始化.存储service的启动

android版本:android-11.0.0_r21 http://aospxref.com/android-11.0.0_r21/ android存储初始化分3个阶段: 1)清理环境。因android支持多用户,解锁后登录的可能是另一个用户,需把之前用户执行的一些信息清理干净。《an…

Net6.0项目升级到Net7.0

NetCore3.1升级到Net6.0,可参考此文章:NetCore3.1项目升级到Net6.0_vs2022 没有startup_csdn_aspnet的博客-CSDN博客 其实与我之前发布的步骤基本一致,升级到net6.0之后,在升级net7.0基本没有可修改的代码,只是升级一…

NOTA双功能螯合剂:NOTA PEG11 MeTz,NOTA PEG11 Azide,两者试剂信息知识总结说明

NOTA及其衍生物是新型双功能整合剂之一。NOTA及其衍生物具有良好的配位和鳌合能力,可作为过渡金属离子的配体。 本文主要就NOTA PEG11 MeTz,NOTA PEG11 Azide两者进行说明,以下内容希望可以帮助到大家。 一、MeTz-PEG11-NOTA 理论分析&#…

【spring源码系列-06】refresh中obtainFreshBeanFactory方法的执行流程

Spring源码系列整体栏目 内容链接地址【一】spring源码整体概述https://blog.csdn.net/zhenghuishengq/article/details/130940885【二】通过refresh方法剖析IOC的整体流程https://blog.csdn.net/zhenghuishengq/article/details/131003428【三】xml配置文件启动spring时refres…

汽车云端主题的实现与应用

主题指的是车载电子中,如仪表,IVI等跟视觉相关的显示设备、包括车身,在不同的自定义模式下的不同显示表现。我们也可以把它理解成为皮肤。 传统的车身皮肤(别克ELECTRA E5) 传统主题的特点 固定,单一&…

使用Flow发送企业应用的通知到微信里

今天我们以kintone作为企业应用管理平台来解释,怎么使用flow发送企业的通知到微信上。 完成后的样子 1.Microsoft Flow响应kintone添加记录的Webhook。 2.Microsoft Flow向微信发送消息。 微信是什么? …

【Leetcode60天带刷】day13栈与队列—— 239. 滑动窗口最大值,347.前 K 个高频元素

题目: 239. 滑动窗口最大值 给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回 滑动窗口中的最大值 。 示例 1: 输入&#xf…

Git进阶系列 | 1. 创建完美的提交

Git是最流行的代码版本控制系统,这一系列文章介绍了一些Git的高阶使用方式,从而帮助我们可以更好的利用Git的能力。本系列一共8篇文章,这是第一篇。原文:Creating the Perfect Commit in Git[1] Git中的提交可以是以下两种情况之一…

jenkins下载gitlab自动化用例并每日批跑

1.安装Jenkins ---待补充 2.安装用例执行节点(虚拟机) 用例执行的虚拟机,需要安装python环境与依赖包(自动化脚本依赖包),需要申请外网权限(安装python依赖需要外网)。执行机需要挂…

四大技巧,教你如何加速手动UI测试

用户界面测试(UI测试)是软件开发过程中的一个重要组成部分。单元测试和集成测试可以确保代码正常运行,UI测试则帮助您确保用户在使用过程中获得最佳体验。这些测试有一个共同的挑战——创建和维护可能非常耗时,尤其是手动测试。 …

vscode配置远程linux开发环境

vscode配置远程linux开发环境 1. linux 要运行sshd服务2. 在vscode上安装Remote Development插件3. 配置远程linux主机的信息4. 远程连接linux 1. linux 要运行sshd服务 使用命令,查看 22端口是否被监听,这个端口是远程连接软件所用到的端口 netstat -…

mysql8.0版本降到5.7版本(下载配置mysql5.7压缩包版本)

目录 一、前言 二、官网下载与解压 三、配置环境变量 四、检查测试当前MySQL版本 五、获取资源 一、前言 在部署项目的时候,有时候8.0版本的MySQL就会报错,这个时候就要换MySQL的版本了,5.7的版本还是比较稳定的。 二、官网下载与解压…

短视频账号矩阵系统sign解密流程(开发)

PHP加密后直接用这个PHP解码如何解密? IOC 控制反转 把创建对象过程交给spring进行管理,降低耦合度 底层原理 xml解析、工厂模式、反射 过程: 使用xml创建对象 使用xml解析技术解析 通过反射创建对象 Class clazz Class.forName(解析出来…

Unity:Gizmos 菜单

推荐:将 NSDT场景编辑器 加入你的3D工具链 3D工具集: NSDT简石数字孪生 Gizmos 菜单 Scene 视图和 Game 视图都有 Gizmos 菜单。 单击 Scene 视图或 Game 视图的工具栏中的 Gizmos 按钮,即可访问 Gizmos 菜单。 “场景”视图中的“辅助图标”…

(提升篇)函数栈帧的创建和销毁

函数栈帧的创建和销毁 1.前言2.预备知识2.1什么是栈帧2.2什么是栈2.2常见的寄存器2.3常见的汇编指令 3.函数栈帧创建和销毁的过程3.1为main函数创建栈空间3.2main函数中创建变量3.3给Add函数传参3.4调用Add函数3.5为Add函数创建栈空间3.6计算3.7把计算好的值返回 1.前言 本章节…

【C/C++数据结构与算法】C语言函数栈帧

目录 一、源代码理论分析 二、主函数的创建 三、c语言代码的汇编 注:不同编译器环境的函数栈帧存在一定差异,本文使用VS2019 一、源代码理论分析 源代码: int Add(int x, int y) {int z 0;z x y;return z; }int main() {int a 10;…