新闻中心
EdgeViTs的一些改进以及完全体复现
本文回顾EdgeViTs复现,介绍BN、LN、GN区别,详述复现详情:将原始结构的LN层换为GN层,把FFN层双层全连接层改为两层卷积层,复现了不同计算复杂度下的结构,还包括模型组成及实验,用Flowers数据集训练并可视化过程。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜

EdgeViTs的一些改进以及完全体复现
1 前言
1.1 EdgeViTs复现回顾
在上一篇文章中,带大家对EdgeViTs中的主要模块LGL进行了复现,并且在Cifar10数据集上进行了实验。在本篇文章中对EdgeViTs的完全体进行了复现,并且在原作的基础上,做出来一些改进。
1.2 BN LN GN的区别
作为神经网络中的重要组成部分,批处理归一化(BN)层有各种形态:Batch Normalization (BN)、Layer Normalization (LN)、Instance Normalization (IN)、Group Normalization (GN)。从公式看它们都差不多:即减去均值,除以标准差,再施以线性映射。

这些归一化算法的主要区别在于操作的 feature map 维度不同。BN对batch size有依赖,当batch size较大时,有不错的效果。而LN、IN、GN能够摆脱这种依赖,其中GN效果最好。
1.3 Batch Normalization (BN)
具体来说,就是把第1个样本的第1个通道,加上第2个样本第1个通道 ...... 加上第 N 个样本第1个通道,求平均,得到通道 1 的均值(注意是除以 N×H×W 而不是单纯除以 N,最后得到的是一个代表这个 batch 第1个通道平均值的数字,而不是一个 H×W 的矩阵)。求通道 1 的方差也是同理。对所有通道都施加一遍这个操作,就得到了所有通道的均值和方差。

1.4 Layer Normalization(LN)
Layer Normalization (LN) 的一个优势是不需要批训练,在单条数据内部就能归一化。LN 对每个样本的 C、H、W 维度上的数据求均值和标准差,保留 N 维度。其均值和标准差公式为:

1.5 Group Normalization (GN)
GN 计算均值和标准差时,把每一个样本 feature map 的 channel 分成 G 组,每组将有 C/G 个 channel,然后将这些 channel 中的元素求均值和标准差。各组 channel 用其对应的归一化参数独立地归一化。
php商城系统
PHP商城系统是国内功能优秀的网上商城系统,同时也是一个商业的PHP开发框架,有多套免费模版,强大的后台管理功能,专业的网上商城系统解决方案,快速建设网上购物商城、数码商城、手机商城、办公用品商城等网站。 php商城系统v3.0 rc6升级 1、主要修复用户使用中出现的js未加载完报错问题,后台整改、以及后台栏目的全新部署、更利于用户体验。 2、扩展出,更多系统内部的功能,以便用户能够迅速找到需
0
查看详情

BN LN GN的区别主要参考BN、LN、IN、GN的简介更详细的介绍大家可以点击该链接进行查阅。
2 复现详情
对于绝大部分的transformer来说,其归一化层都选择LN,LN最初使用在自然语言中,在transformer应用在了图像之后,大家对其未做更改,并且该LN层在实际的应用中效果不错,所以大家在实际的使用中对其未做更改,在本项目中,对原始的结构中的LN层进行了替换,使用GN层作为归一化层,并且将其FFN层中的双层全连接层更改为两层卷积层。具体如下所示:

论文作者在不同的计算复杂度(具体为0.5G、1G和2G)下构建了一系列具有本文所提出的LGL bottleneck的EdgeViTs。下图总结了这些配置。在本项目中,对下面所列的结构均进行了复现。

继之前的分层ViT之后,EdgeViTs由四个具有空间分辨率的阶段组成(即token序列长度),自注意力模块逐渐减少,取而代之的是我们的LGL bottleneck。对于每个阶段的下采样,作者使用了一个conv层,核大小为2×2,步长为2,除了第一阶段,作者按×4下采样输入特征,并使用4×4和步长为4的核。作者采用了条件位置编码,这已被证明优于绝对位置编码。这可以使用2D depth-wise卷积加上残差连接来实现。在提出的模型中,作者使用具有零填充的3×3 depth-wise卷积,在局部聚合及全局稀疏自注意力之前。FFN由两个线性层组成,其中GeLU非线性激活函数位于两者之间。模型的局部聚合操作可以通过point-wise和depth-wise卷积堆叠实现。全局稀疏注意力由四个阶段采样率为(4,2,2,1)的空间均匀采样器和标准MHSA组成。局部传播通过深度可分离转置卷积实现,其kernel大小和步长等于全局稀疏注意力中使用的采样率。
3 模型实验
In [ ]from edgevit import EdgeViT_XXS, EdgeViT_XS, EdgeViT_Simport paddle model = EdgeViT_XXS() paddle.summary(model,(1,3,224,224))In [ ]
import paddlefrom paddle.metric import Accuracyfrom paddle.vision.datasets import Flowersfrom paddle.vision.transforms import Compose, Normalize, Resize, Transpose, ToTensor callback = paddle.callbacks.VisualDL(log_dir='visualdl_log_dir') normalize = Normalize(mean=[0.5, 0.5, 0.5], std=[0.5, 0.5, 0.5], data_format='HWC') transform = Compose([ToTensor(), Normalize(), Resize(size=(224,224))]) cifar10_train = paddle.vision.datasets.Flowers(mode='train', transform=transform) cifar10_test = paddle.vision.datasets.Flowers(mode='test', transform=transform)# 构建训练集数据加载器train_loader = paddle.io.DataLoader(cifar10_train, batch_size=128, shuffle=True)# 构建测试集数据加载器test_loader = paddle.io.DataLoader(cifar10_test, batch_size=128, shuffle=True) model = paddle.Model(EdgeViT_XXS()) optim = paddle.optimizer.Adam(learning_rate=0.001, parameters=model.parameters()) model.prepare( optim, paddle.nn.CrossEntropyLoss(), Accuracy() ) model.fit(train_data=train_loader, eval_data=test_loader, epochs=20, callbacks=callback, verbose=1 )
3.1 可视化训练过程

以上就是EdgeViTs的一些改进以及完全体复现的详细内容,更多请关注其它相关文章!
# 两层
# 天津综合营销培训推广
# 淘客有哪些推广网站
# 阳春网站建设设计公司
# 运城网站推广工作内容
# 海口滨海网站优化
# 辽宁推广网站搭建备案
# 淮南seo优化多少钱
# 网站推广应用案例
# 番禺sem网站优化推广价格
# 北京网站建设及优化
# ai
# 首款
# 系列产品
# 加载
# 对其
# 的是
# 标准差
# 进行了
# 均值
# 中文网
# 区别
相关栏目:
【
行业资讯67740 】
【
技术百科0 】
【
网络运营39195 】
相关推荐:
什么叫typescript
iphone拍电子屏有横条如何解决
夸克搜题的原理是什么
typescript怎么添加css样式
单身交友必备软件
nfc功能是什么意思怎么开启
如何用固态硬盘做缓存
三星固态硬盘如何保修
苹果电脑如何输入命令
怎么下载360桌面壁纸
忐忑不安是什么意思
酷我音乐怎么改每日推荐 酷我音乐每日推荐修改方法
i5 6500怎么装win7
路由器上面的power红灯是什么意思
如何判断固态硬盘端口
闪光灯power闪烁是什么意思
反向春运抢票方式
路由器power闪红绿灯闪是什么意思
typescript的语法格式是什么
微信最多可以加多少好友
vivo手机爱奇艺怎么投屏到电视操作步骤
win10如何开启命令行
如何安装笔记本固态硬盘
mac如何使用vi命令
8英寸等于多少厘米
excel中datediff函数怎么用
win7怎么装扫描仪
固态硬盘颗粒如何修理
手机的nfc是什么功能是什么意思
春运抢票需要抢几天
春运抢票最好抢什么票啊
闲鱼上面的power是什么意思
苹果16主打颜色有哪些
苹果16有哪些可以设置
typescript在浏览器里怎么用
如何判断固态硬盘
固态硬盘损坏如何修复
单片机蜂鸣器响了怎么停
一分钟等于多少秒
单片机怎么控制内功率
hen是什么意思
win7怎么取消360显示的壁纸
春运抢票准备什么东西
typescript 如何解决 null
市盈率中的19a是什么意思
linux下如何重定位命令
typescript用在哪里
市盈率20a21e是什么意思
净水器上的power是什么意思
linux环境中如何使用ping命令


2025-07-31
浏览次数:次
返回列表
rom paddle.vision.transforms import Compose, Normalize, Resize, Transpose, ToTensor
callback = paddle.callbacks.VisualDL(log_dir='visualdl_log_dir')
normalize = Normalize(mean=[0.5, 0.5, 0.5],
std=[0.5, 0.5, 0.5],
data_format='HWC')
transform = Compose([ToTensor(), Normalize(), Resize(size=(224,224))])
cifar10_train = paddle.vision.datasets.Flowers(mode='train',
transform=transform)
cifar10_test = paddle.vision.datasets.Flowers(mode='test',
transform=transform)# 构建训练集数据加载器train_loader = paddle.io.DataLoader(cifar10_train, batch_size=128, shuffle=True)# 构建测试集数据加载器test_loader = paddle.io.DataLoader(cifar10_test, batch_size=128, shuffle=True)
model = paddle.Model(EdgeViT_XXS())
optim = paddle.optimizer.Adam(learning_rate=0.001, parameters=model.parameters())
model.prepare(
optim,
paddle.nn.CrossEntropyLoss(),
Accuracy()
)
model.fit(train_data=train_loader,
eval_data=test_loader,
epochs=20,
callbacks=callback,
verbose=1
)