MAE学习 论文阅读与学习 源码阅读
这里回顾了BERT的重要自监督任务:masked input:randomly mask some tokes and predict them
作者提到了3点看法(以后随着技术发展,背景又肯定不一样了):
1.cv和nlp架构不同(cv—过去十年是卷积的时代,nlp,由transformer主宰)
2.图像和语言的数据特点不同——图像具有较高的空间信息冗余度,即使缺失一两个像素,图像的空间信息也不会遭到很大损失。但是语言就不同了(想象一下说话缺动词或者缺主语,听不懂了吧)。因此作者提出了,将图像的mask ratio提高到惊人的75%,只使用剩余的25%去reconstruct图像,这样做的目的是迫使机器“好好学习”,即原文所说
This strategy largely reduces redundancy and creates a challenging selfsupervisory task that requires holistic understanding beyond low-level image statistics。
3.The autoencoder’s decoder, which maps the latent
representation back to the input, plays a different role between reconstructing text and images.这条似乎还是个实验性的结论.
overhead 开销
这里讲了如何实现mask:
1.random shuffle tokens列表(实现随机mask)
2直接remove列表最后数目为ratiolen(tokens)的元素。这些元素就是mask掉的tokens.
3.encode剩下的元素
4.encoded列表又append上数目为ratiolen(tokens)的mask tokens,并unshuffle这个列表。具体细节见下面源码阅读。
6.将unshuffle后的列表加上他们的positional embedding,并给decoder.
代码demo实操:
使用gan loss的mae效果非常好,如上,第三个和第四个分别是重构图片与重构图片补上未遮挡patch所形成的图片。(重构图片没有对那些未遮挡patch的tokens的模型输出计算损失并优化,只对mask的部分进行优化)
pytorch版本官方源码阅读
1.关于depth:
由于mae的encoder直接沿袭ViT的架构,因此它的深度参数直接省略了,直接在不同规模的模型命名中体现:如图:
以上是models_mae.py
仅仅有decoder_depth的参数。想看encoder的深度,需要到model_ViT.py中找。
# add pos embed w/o cls token
x = x + self.pos_embed[:, 1:, :]
对于以上的代码段:cls_token没有position_embedding
2.关于decoder
和encoder一样,官方实现decoder采用了ViT 的transformer架构。
这里是forward_decoder函数。这里对应上面第四步unshuffle操作,可以看到,cls_token始终位于所有token开头,没有参与shuffle与unshuffle操作。每一个mask_token都是一个可以学习的参数。
这里我不太明白,decoder_pos_embed直接就加到x上,这里x是包括cls_token的,cls_token按理不应该有pos_embed不是吗
关于爱因斯坦求和np.einsum
官方文档介绍,numpy
官方文档介绍,torch
在这里,einsum的作用是把第二个维度放到了最后,最后的维度变为nhwpqc。einsum非常灵活,首先自己用六个字母nchpwq指定了x张量的下标,然后做了维度调换的操作变为nhwpqc。从而接下来的reshape做准备。
关于训练和demo展示的区别
细节:一张图片patchify经过mae的encoder和decoder,得到输出是(1,token_length(不包括cls),patch_size x patch_size x in_chans).mae输出没有经过unpatchify的操作。
mae在训练时实际将target,即标签图片首先patchify,然后跟自己的输出进行误差计算。在demo展示时其输出经过unpatchify方得到图片的标准维度,可以展示。
源码Block引用:如果你安装了最新的timm,
在Block的参数列表中,qk_scale=None参数应删去
mae util中正余弦编码有一行assert,内容是检查embed_dim是不是偶数,如果是奇数就会报错。
embed数目为奇数
MAE学习 论文阅读与学习 源码阅读相关推荐
- Hive学习(一)窗口函数源码阅读
Hive学习(一)窗口函数源码阅读 背景 窗口函数执行逻辑 代码流转图 源码阅读分析 PTFOperator PTFInvocation PTFPartition TableFunctionEvalu ...
- MP4学习(九)ts-mp4源码阅读(7)mdia box的解析
mdia box的解析 常见的MP4结构图 mdia box的定义 /* ** mdia box的定义,包含: ** mdhd.hdlr.minf等box */ static mp4_atom_han ...
- MP4学习(四)ts-mp4源码阅读(2)MP4的解析流程
MP4的解析流程 常见的MP4结构图 MP4 box的定义 MP4也是一个容器 /* ** MP4容器定义,包含: ** ftyp.moov.mdat */ static mp4_atom_handl ...
- MP4学习(五)ts-mp4源码阅读(3)ftyp box的解析
ftyp box的解析 常见的MP4结构图 ftyp box有且只有一个,在mp4文件最开始的地方.它依次包括1个32位的major brand(4个字符),1个32位的minor version(整 ...
- 【源码阅读】SIR-GN: A Fast Structural Iterative Representation Learning Approach For Graph Nodes
目录 简介 论文简介 准备工作 运行 源码阅读 完整源码(注释版) 结语 简介 Hello! 非常感谢您阅读海轰的文章,倘若文中有错误的地方,欢迎您指出- ଘ(੭ˊᵕˋ)੭ 昵称:海轰 标签:程序 ...
- SpringMVC源码阅读系列汇总
1.前言 1.1 导入 SpringMVC是基于Servlet和Spring框架设计的Web框架,做JavaWeb的同学应该都知道 本文基于Spring4.3.7源码分析,(不要被图片欺骗了,手动滑稽 ...
- 大神手把手教源码阅读的方法、误区以及三种境界
丁威 中间件兴趣圈 读完需要 1 分钟 速读仅需 1 分钟 在技术职场中普遍存在如下几种现象: 对待工作中所使用的技术不需要阅读源码,只需在开发过程中能够熟练运用就行 看源码太费时间,而且容易忘记,如 ...
- mysql 1260,MYSQL 源码阅读 六
前期节要 MYSQL源码阅读 一 MYSQL源码阅读 二 MYSQL源码阅读 三 MYSQL 源码阅读 四 MYSQL 源码阅读 五 上次有两个问题没搞明白 1 是 为什么一定要开启调试线程 ? 因为 ...
- 转-OpenJDK源码阅读导航跟编译
OpenJDK源码阅读导航 OpenJDK源码阅读导航 博客分类: Virtual Machine HotSpot VM Java OpenJDK openjdk 这是链接帖.主体内容都在各链接中. ...
- 超像素SLIC算法源码阅读
超像素SLIC算法源码阅读 超像素SLIC算法源码阅读 SLIC简介 源码阅读 实验结果 其他超像素算法对比 超像素SLIC算法源码阅读 SLIC简介 SLIC的全称Simple Linear Ite ...
最新文章
- php 二维数组排序函数,php自定义二维数组排序函数array
- Call和Apply的区别
- python不好的地方_Python 语言中经常有疑惑的地方
- xstream不映射字段_Mybatis_day03:输入映射和输出映射
- linux系统从开机到登录之前的启动流程
- 18秋学期《计算机网络》在线作业,18秋北交《计算机应用基础及计算机网络与应用》在线作业一-2辅导资料.docx...
- GTK实现简单计算器(calculator.c)
- 《物联网Android程序开发案例式教程》Demo2:相对布局
- linux limbo镜像文件下载,limbo 2000镜像下载
- php电子书mobi,EPUB / PDF / MOBI 電子書下載
- Go语言的安装与环境配置
- Android 出海 Admob 踩坑
- html5渐变色毛玻璃,基于CSS3实现的毛玻璃渐变效果
- 将淘宝客链接转换为正常淘宝、天猫商品链接
- 现代服务业行业税收筹划,信息技术公司节税方案
- layui.table(表格)跨页多选
- 2021-03-31
- Qt进阶--Item Views详解(基础,原创,超级详细)
- 使用后羿采集器采集数据,并导出到MySql数据库中
- 语音助手——问答型助手架构和设计
热门文章
- 【Android】用Cubism 2制作自己的Live2D——官方App样例源码学习(4)!
- HAL ADC连续转换模式 Continuous Conversion Mode
- 红黑树特点以及如何构建红黑树
- 鸿蒙dnf怎么样,DNF:最保值时装终于再出,当年卖300如今值5000,又是全服真香?...
- 强大的多语言版本在线图片处理网站
- 中国第一份OA系统用户实名口碑选型报告(选型宝重磅发布!)
- 谈谈整车电子电气架构EEA
- 计算机控制器安装方法,win7正确安装3D视频控制器的两种方法介绍
- 联想Y700笔记本:硬盘突然不见了
- 2018春季java校招_2018阿里巴巴春季校招笔试题(Java开发)