# ViT Online Class
# Author: Dr. Zhu
# Project: PaddleViT (https://github.com/BR-IDL/PaddleViT)
# 2021.11
import paddle
import paddle.nn as nnpaddle.set_device('cpu')class Attention(nn.Layer):# TODO: 补全时,删除passdef __init__(self, embed_dim, num_heads, qkv_bias=False, qk_scale=None, dropout=0., attention_dropout=0.):super().__init__()self.num_heads = num_heads self.attn_head_size = int(embed_dim / self.num_heads)self.all_head_size = self.attn_head_size * self.num_headsself.qkv = nn.Linear(embed_dim, self.all_head_size*3)if qk_scale == None:self.scales = self.attn_head_size ** -0.5else:self.scales = qk_scaleself.proj = nn.Linear(self.all_head_size, embed_dim)self.attn_dropout = nn.Dropout(attention_dropout)self.proj_dropout = nn.Dropout(dropout)self.softmax = nn.Softmax(axis=-1)def transpose_multihead(self, x):new_shape = x.shape[:-1] + [self.num_heads, self.attn_head_size]x = x.reshape(new_shape)x = x.transpose([0, 2, 1, 3])return xdef forward(self, x):qkv = self.qkv(x).chunk(3, axis=-1)q, k, v = map(self.transpose_multihead, qkv)attn = paddle.matmul(q, k, transpose_y=True)attn = attn * self.scalesattn = self.softmax(attn)attn_weights = attnattn = self.attn_dropout(attn)z = paddle.matmul(attn, v)z = z.transpose([0, 2, 1, 3])new_shape = z.shape[:-2] + [self.all_head_size]z = z.reshape(new_shape)z = self.proj(z)z = self.proj_dropout(z)return z, attn_weightsdef main():t = paddle.randn([4, 16, 96])print('input shape = ', t.shape)model = Attention(embed_dim=96, num_heads=8, qkv_bias=False, qk_scale=None, dropout=0., attention_dropout=0.)print(model)out, attn_weights = model(t)print(out.shape)print(attn_weights.shape)if __name__ == "__main__":main()

VIT attention实现(paddle2.2)相关推荐

  1. 2.一脚踹进ViT——Attention机制原理及实现

    2.一脚踹进ViT--Attention机制原理及实现 同样是百度飞浆课程的笔记,视频中的图就拿来用了 1. 注意力(Attenetion)机制原理 先来看传统RNN结构如何最终演变到我们目前的注意力 ...

  2. ViT (Vision Transformer) ---- SimpleRNN + Attention

    Attention机制最早还是要来源Bengio在2015年发表的一篇文章Neural machine translation by jointly learning to align and tra ...

  3. 【TransformerCNNTiDE】从CNN到ViT,再从ViT到TiDE,回顾近十年顶刊和会议发表的关于Attention自注意力、Conv卷积机制以及最新诞生的TiDE模型的发展历程

    目录 一.CV中的Transformer介绍 二.Attention机制增强CNN 前言: 1. Attention Augmented Convolutional Networks(ICCV 201 ...

  4. Transformer不比CNN强!Local Attention和动态Depth-wise卷积的前世今生

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 作者丨Qi Han@知乎(已授权) 来源丨https://zhuan ...

  5. 美团提出基于隐式条件位置编码的Transformer,性能优于ViT和DeiT

    视学算法发布 机器之心编辑部 Transformer 跨界计算机视觉的热潮之下,有一个问题需要解决:如何像 CNN 一样直接处理不同尺寸的输入?对此,美团提出了一种新型隐式条件位置编码方法,基于该方法 ...

  6. 何恺明大神新作:一种用于目标检测的主流ViT架构,效果SOTA

    链接:https://arxiv.org/abs/2203.16527 作者单位:Facebook AI Research 1导读 3月30日,何恺明大神团队在ArXiv上发布了最新研究工作,该工作主 ...

  7. 将大核卷积分三步,清华胡事民、南开程明明团队全新视觉骨干VAN,超越SOTA ViT和CNN...

    来源:机器之心 来自清华大学和南开大学的研究者提出了一种新型大核注意力(large kernel attention,LKA)模块,并在 LKA 的基础上构建了一种性能超越 SOTA 视觉 trans ...

  8. 全领域涨点 | Evolving Attention在CV与NLP领域全面涨点

    本文提出了一种新型通用的注意力机制Evolving Attention来提高Transformer的性能.针对多种任务,其中包括图像分类.自然语言理解和机器翻译,本文所提出的Evolving Atte ...

  9. VIT pytorch源码

    参考 https://blog.csdn.net/weixin_44966641/article/details/118733341 长宽不等 import torch from torch impo ...

最新文章

  1. AAAI 2020 | MaskGEC:通过动态掩蔽改善语法纠错
  2. DPDK报文转发(四)
  3. 2019年,你需要关注这些Node API和Web框架
  4. ip addr 相关操作
  5. js 中使用 时间datetime 类型到前端iOS 不兼容问题
  6. Android开发中调用Spring CXF整合发布的WebService接口为什么抛出异常错误?
  7. Day02-变量_数据类型和运算符
  8. 《图解Http》 2-6章: 基础,报文,状态码,首部。
  9. Echo团队Alpha冲刺随笔 - 第八天
  10. linux下下载fnl数据,NCEP再分析资料FNL数据在windows平台用cygwin批量下载方法
  11. SAP 查询分析器的实现的3种方法
  12. uml点餐系统活动图_UML 活动图
  13. 用计算机画图评课稿,小学信息技术三年级下册《图形的复制与粘贴》说课稿
  14. 在家用群晖搭建wordpress博客
  15. Ubuntu桌面不见了,桌面找回
  16. 淘宝天猫商家运营,宝贝标题如何突出卖点,标题编写方法小技巧
  17. PowerShell 批量禁用AD账号并记录
  18. ​【优化求解】基于人工蜂群算法求解无刷直流电机PID控制matlab代码
  19. WIN10应用商店(MicrosoftStore)闪退解决方法!!!
  20. 视频流快速处理技术之二——基于数据量波动特性的视频静止画面检测

热门文章

  1. scanf与scanf_s区别
  2. 科沃斯擦玻璃机器人使用感受_科沃斯擦玻璃机器人怎么样?有人用过自动擦窗机器人吗?价格是多少...
  3. ubuntu 20.04 编译Android9.0的android源码
  4. 正点原子Alpha Linux开发板相关资料分享
  5. 【Medical physics】CT的空间和密度分辨率
  6. 旧版VS安装 Visual Studio 2019/2017/2015官方安装教程
  7. screentogif能录制声音吗_如何用Screen to Gif快速录制动图
  8. mysql建图书馆表_创建学校图书馆数据库 BookDB
  9. 索尼官网的产品怎么样?
  10. 我犯的错和解决AnimationEvent 'NewEvent' has no receiver! Are you missing a component