Feed-Forward Layers
论文解读:Do You Even Need Attention?
开源代码:Do You Even Need Attention?
由于我还没接触transformer框架(占个坑,后面补充),故仅对文中提到的Feed-Forward层进行分析,后续再对该开源代码的整体进行分析。 文中提到了应用在patch维度上的前馈层取代了 vision transformer 中的注意层,由此产生的架构只是一系列以交替方式应用于patch和特征维度的前馈层。
在图中可以看到多层时,Feed-Forward层交替处理Features和Patches,同时LinearBlock网络中采用残差结构,网络展开如下:
LinearBlock((mlp1): Mlp((fc1): Linear(in_features=192, out_features=768, bias=True)(act): GELU()(fc2): Linear(in_features=768, out_features=192, bias=True)(drop): Dropout(p=0.0, inplace=False))(norm1): LayerNorm((192,), eps=1e-06, elementwise_affine=True)(mlp2): Mlp((fc1): Linear(in_features=197, out_features=788, bias=True)(act): GELU()(fc2): Linear(in_features=788, out_features=197, bias=True)(drop): Dropout(p=0.0, inplace=False))
分析得到FeedForward的网络结构图如下所示:
LinearBlock模块设计的源码:
class LinearBlock(nn.Module):def __init__(self, dim, num_heads, mlp_ratio=4., qkv_bias=False, qk_scale=None, drop=0., attn_drop=0.,drop_path=0., act_layer=nn.GELU, norm_layer=nn.LayerNorm, num_tokens=197):super().__init__()# First stageself.mlp1 = Mlp(in_features=dim, hidden_features=int(dim * mlp_ratio), act_layer=act_layer, drop=drop)self.norm1 = norm_layer(dim)# Second stageself.mlp2 = Mlp(in_features=num_tokens, hidden_features=int(num_tokens * mlp_ratio), act_layer=act_layer, drop=drop)self.norm2 = norm_layer(num_tokens)# Dropout (or a variant)self.drop_path = DropPath(drop_path) if drop_path > 0. else nn.Identity()def forward(self, x):x = x + self.drop_path(self.mlp1(self.norm1(x)))x = x.transpose(-2, -1)x = x + self.drop_path(self.mlp2(self.norm2(x)))x = x.transpose(-2, -1)return x
Feed-Forward Layers相关推荐
- Transformer结构解读(Multi-Head Attention、AddNorm、Feed Forward)
咱们还是照图讨论,transformer结构图如下,本文主要讨论Encoder部分,从低端输入inputs开始,逐个结构进行: 图一 一.首先说一下Encoder的输入部分: 在NLP领域,个人理解, ...
- 【深度学习】CV和NLP通吃!谷歌提出OmniNet:Transformers的全方位表示
在机器翻译.图像识别等任务上表现SOTA!性能优于Performer.ViT和Transformer-XL等网络. 作者单位:谷歌Research和大脑团队等 论文:https://arxiv.org ...
- bert 无标记文本 调优_使用BERT准确标记主观问答内容
bert 无标记文本 调优 介绍 (Introduction) Kaggle released Q&A understanding competition at the beginning o ...
- PyTorch学习笔记(19) ——NIPS2019 PyTorch: An Imperative Style, High-Performance Deep Learning Library
0. 前言 波兰小哥Adam Paszke从15年的Torch开始,到现在发表了关于PyTorch的Neurips2019论文(令我惊讶的是只中了Poster?而不是Spotlight?).中间经历了 ...
- AI实战:用Transformer建立数值时间序列预测模型开源代码汇总
用Transformer建立数值时间序列预测模型开源代码汇总 Transformer是一个利用注意力机制来提高模型训练速度的模型.,trasnformer可以说是完全基于自注意力机制的一个深度学习模型 ...
- Dissecting BERT Part 1: The Encoder 解析BERT解码器(transformer)
原文:https://medium.com/dissecting-bert/dissecting-bert-part-1-d3c3d495cdb3 A meaningful representatio ...
- “Attention is All You Need 翻译
<p><img src="output_0_0.png" alt="png"></p> "Attention is ...
- 谷歌BERT预训练源码解析(二):模型构建
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/weixin_39470744/arti ...
- BERT大火却不懂Transformer?读这一篇就够了 原版 可视化机器学习 可视化神经网络 可视化深度学习...20201107
20211016 调节因子 20211004 [NLP]Transformer模型原理详解 - 知乎 论文所用 20210703 GPT模型与Transformer进行对比_znevegiveup1的 ...
- 2018-3-31 文章(ELM-Chinese-Brief)原文
什么是超限学习机 1 Guang‐Bin Huang School of Electrical and Electronic Engineering, Nanyang Technological Un ...
最新文章
- asp中sub与function的区别
- Bash命令行历史用法【转】
- Dubbo启动时检查
- 修建道路 贪心,思维(女赛)
- python流行的爬虫框架_Python爬虫相关框架
- Protobuf序列化的原理
- arm 架构_Arm架构之Arm内核解析
- Python-理解装饰器
- JavaEE实战班第19天
- 在Word里使用部分正则表达式
- one邮箱服务器端口,oneinstack 设置远程访问,将端口对外开放
- caffe学习日记--Lesson2:再看caffe的安装和使用、学习过程
- 最佳黑色背景的Visual Studio 2005/2008配置-尤其适合开发人员使用
- ffmpeg 解复用视频文件
- Windows XP 启动过程jjhou
- freenom免费域名的申请+cloudflare(域名代理解析)
- win10显示rpc服务器不可用,win10系统RPC服务器不可用如何处理?
- win10打字不显示选字框
- Linux下菜鸟用XMMS(转)
- HBase,phoenix
热门文章
- [高仿课堂派]学生老师课程管理系统(SpringBoot+Vue+MySQL数据库)
- 前端生成带有logo的二维码并保存
- 智慧养殖:鸡舍环境监测智慧管理系统
- 云亦然的日常短句集合(每日更新)
- 不忘初心,坚持创作和分享,做自己喜欢的事 - 2022 年回顾
- (附源码)计算机毕业设计SSM基于html的网上购物系统
- Linux里面的oa环境是什么,Linux上搭建OA环境帮助文档
- xposed定位插件_GpsHook实现模拟定位,手机需安装Xposed类框架
- 随机森林的“随机”在哪?
- 经典神经网络论文超详细解读(一)——AlexNet学习笔记(翻译+精读)