ViT学习笔记

一、Embedding层

        对于标准的Transformer 模块,要求输入的是 token (向量 ) 序列,即二维矩阵 [num_token, token_dim]
        在代码实现中,直接通过一个卷积层来实现以ViT- B/16为例,使用卷积核大小为 16x16 stride 16 , 卷积核个数为768
[224, 224, 3] -> [14, 14, 768] -> [196, 768]
        在输入Transformer Encoder 之前需要加上 [class]token 以及Position Embedding ,都是可训练参数;拼接[class]token: Cat([1, 768], [196, 768]) -> [197, 768] ;叠加Position Embedding: [197, 768]-> [197, 768]
        使用位置编码效果会好一点,而使用1D,2D,相对位置编码,效果差不多
二、Transformer Encoder层
注意,在Transformer Encoder前 有个Dropout层,后有一个Layer Norm
训练 ImageNet21K 时是由 Linear+tanh激活函数 +Linear ;但是迁移到ImageNet1K 上或者你自己的数据上时,只有一个 Linear
  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值