Vision Transfomer系列第二节---Tricks测试

目录

学习式和固定式位置编码测试

主要测试无位置编码\可学习位置编码和固定式位置编码的训练效果:

其中固定式位置编码采用之前博客的正余弦位置编码

无位置编码:

cpp 复制代码
# input = input + self.pos_embed.to(input)

train: epoch=30, loss=0.523701012134552

可学习位置编码:

cpp 复制代码
self.pos_embed = nn.Parameter(torch.zeros(1, num_patches + 1, embed_dim))

train: epoch=31, loss=0.4830354154109955

固定式位置编码:

cpp 复制代码
self.pos_embed = posemb_sincos_1d(len=num_patches + 1, dim=embed_dim,temperature=1000).unsqueeze(0)

train: epoch=30, loss=0.5667092204093933

目测位置编码好像没什么大作用???谁呢解释下

dropout的作用测试

这里主要测试attension矩阵后的dropout层.

该dropout层可以使得attension矩阵行方向随机赋0,其他除以drop概率,可以用于缓解 Vision Transformer 中的过拟合问题.

下面测试下dropout=0/0.25/0.5/0.75的训练效果.
dropout=0:

train: epoch=45, loss=0.3784039616584778

val: epoch=45, loss=0.24934779107570648, accuracy=0.9

dropout=0.25:

train: epoch=45, loss=0.38590484857559204

val: epoch=45, loss=0.24613243341445923, accuracy=0.906

dropout=0.5:

train: epoch=45, loss=0.48613107204437256

val: epoch=45, loss=0.30928316712379456, accuracy=0.876

dropout=0.75:

train: epoch=45, loss=0.4950393736362457

val: epoch=45, loss=0.36618882417678833, accuracy=0.852

初步来看一定程度地dropout有利于模型收敛,但是过大就会使得其反,因此我后面开始取p=0.1

block深度的作用测试

block作为transfomer类模型的核心组件,block的重复次数是一个超参数,直接影响到模型的深度和表达能力.

下面测试下depth分别为1/3/6/12/24的训练效果.

为了对比方便,下面我都用tensorboard可视化,为了训练快一点batch为8.
depth=1:

depth=3:

depth=6:


depth=12:

实验可知:block的重复次数过低会导致模型的表达能力不够;

过高会导致训练很慢,和过拟合(验证损失更早地上升),而且当表达能力足够后准确率并不会上升太多.因此后面开始我取depth=6

embeding维度大小的作用测试

在VIT中embeding维度可以理解为每一个图像块的编码维度

embeding维度大小和block的重复次数类似,可以直接影响到模型的表达能力.

下面测试下embeding dim分别为12/48/192/768的训练效果.
embeding dim=12:

embeding dim=48:

embeding dim=192:

embeding dim=768:

实验可知:embeding dim过小会导致模型的表达能力不够,具体表现为训练集损失下不去;

过大会导致训练很慢,而且当表达能力足够后准确率并不会上升太多.考虑到速度,因此后面开始我取embeding dim=192.

多头的作用测试

Multi-Head Attention的原理是通过将模型分为多个头,形成多个子空间,让模型关注不同方面的信息。每个头独立进行注意力运算,得到一个注意力权重矩阵。注意力矩阵完成不同块之间的交互,然后每个头之间通过cat和全连接进行交互.

下面测试下head_num分别为1/4/12/36的训练效果.

head_num=1

head_num=4

head_num=12

head_num=36

实验可知,适当的head_num可以提高模型的拟合能力,但是不是越多越好,需要根据任务的复杂情况和embeding维度去调整.本处实验其实效果不明显,可能是任务过于简单的原因.

在后面,我将会令head_num为4

Overlap Patch的作用

Overlap Patch指的是在切分图像为小块时,允许相邻的小块之间有重叠。这种重叠可以提高图像块之间的信息交互,可能会影响模型的性能和效果。这种trick在很多transfomer网络如EfficientViT,SwimTransfomer中都有应用.
非Overlap Patch:

卷积核大小是16,stride取16,padding取0,输入为224x224时,输出为14x14

Overlap Patch:

卷积核大小是20,stride取16,padding取2,输入为224x224时,输出也为14x14,但是相邻图像块之间有2圈像素的交集.

本处实验其实效果不明显

相关推荐
张较瘦_1 小时前
[论文阅读] 人工智能 + 软件工程 | 需求获取访谈中LLM生成跟进问题研究:来龙去脉与创新突破
论文阅读·人工智能
一 铭2 小时前
AI领域新趋势:从提示(Prompt)工程到上下文(Context)工程
人工智能·语言模型·大模型·llm·prompt
古月居GYH3 小时前
【数据分析】如何在PyCharm中高效配置和使用SQL
ide·sql·pycharm
云泽野4 小时前
【Java|集合类】list遍历的6种方式
java·python·list
麻雀无能为力5 小时前
CAU数据挖掘实验 表分析数据插件
人工智能·数据挖掘·中国农业大学
时序之心5 小时前
时空数据挖掘五大革新方向详解篇!
人工智能·数据挖掘·论文·时间序列
IMPYLH6 小时前
Python 的内置函数 reversed
笔记·python
.30-06Springfield6 小时前
人工智能概念之七:集成学习思想(Bagging、Boosting、Stacking)
人工智能·算法·机器学习·集成学习
说私域7 小时前
基于开源AI智能名片链动2+1模式S2B2C商城小程序的超级文化符号构建路径研究
人工智能·小程序·开源
永洪科技7 小时前
永洪科技荣获商业智能品牌影响力奖,全力打造”AI+决策”引擎
大数据·人工智能·科技·数据分析·数据可视化·bi