当前位置: 首页 > news >正文

宁波网站建设优化的公司排名百度明星人气榜入口

宁波网站建设优化的公司排名,百度明星人气榜入口,做原创的网站,做网站的公司由于项目需要训练一个主干网络接多个分支的模型,所以先训练一个主干网络加第一个分支,再用另外的数据训练第二个分支,训练的过程中需要冻结主干网络部分,后面的分支训练过程也一样需要冻结主干网络部分。 冻结模型的方式 for nam…

由于项目需要训练一个主干网络接多个分支的模型,所以先训练一个主干网络加第一个分支,再用另外的数据训练第二个分支,训练的过程中需要冻结主干网络部分,后面的分支训练过程也一样需要冻结主干网络部分。

冻结模型的方式

for name, para in model.named_parameters():# 冻结backbone的权重if name.split(".")[0] == "backbone":para.requires_grad = False        # 或者用para.requires_grad_(False),一个是通过属性直接赋值,一个是通过函数赋值else:para.requires_grad = True
# 可以打印需要更新梯度的参数
for name, value in model.named_parameters():print(name, "\t更新梯度:",value.requires_grad)

坑1:这样做并不能冻结batchnorm层的参数,所以需要在训练中手动冻结。如:

def fix_bn(m):classname = m.__class__.__name__if classname.find('SyncBatchNorm') != -1 or classname.find('InstanceNorm2d') != -1 or classname.find('BatchNorm2d') != -1:          #SyncBatchNorm, InstanceNorm2dif m.num_features in [32, 64, 96, 128, 256, 384, 768, 192, 1152, 224]:      # 需要冻结的BN层的通道数m.eval()def train():for epoch in range(max_epoch):model.train()if args.freeze:model.apply(fix_bn)model.backbone[5][0].block[0][1].eval()   # 假如需要冻结的BN层通道数和不需要冻结的BN层通道数一样,则需要单独写for batch_idx, (data, target) in enumerate(train_loader):...

坑2:用了冻结训练(freeze)就不要用EMA方式更新模型了,不然收敛缓慢不说,还会造成前面冻结的参数产生变化,可以从EMA的代码看出端倪:

class EMA:def __init__(self, model, decay=0.9999):super().__init__()import copyself.decay = decayself.model = copy.deepcopy(model)self.model.eval()def update_fn(self, model, fn):with torch.no_grad():e_std = self.model.state_dict().values()#m_std = model.module.state_dict().values()   # multi-gpum_std = model.state_dict().values()          # single-gpufor e, m in zip(e_std, m_std):e.copy_(fn(e, m))def update(self, model):self.update_fn(model, fn=lambda e, m: self.decay * e + (1. - self.decay) * m)

可以看出EMA的方式更新模型方式,大部分是结合上一个模型的参数的,即:

model_update = decay*model(t-1) + (1-decay)*model(t)       # model(t-1) 代表上一次迭代模型的参数,model(t)代表当前迭代得到的模型参数

虽然冻结了backbone的参数,阻止了梯度在backbone中反向传播,但参数由于经过如上乘法及加法运算,由于精度原因,还是会发生微小变化,虽然训练次数增加,这个变化会扩大,从而达不到冻结训练的效果。而且从计算公式可以看出来,采用EMA的方式更新模型参数,参数会更新得很慢,会造成网络难以学习的“错觉”。我在这里困住了3天,有怀疑过是否是网络设计问题,是否是多GPU同步的问题,是否是参数设置,如学习率过小,权重衰减过大,或者dropout设置过大等等,最终一步一步排除定位到EMA的问题。
以这次的经验来看,EMA只适合在上一次训练得到模型的基础上,这一次加了额外的数据,需要在上一次的基础上做微调的情况。

http://www.tj-hxxt.cn/news/124512.html

相关文章:

  • wordpress网站速度慢seo网站推广收费
  • 黄陂区建设招标网站seodao cn
  • wordpress 文章自动标签台州网站seo
  • 新手用jsp做网站宁波建站模板系统
  • 网站建设活动广告百度关键词关键词大全
  • 网站icp备案信息是什么意思百度交易平台官网
  • 学做各种糕点的网站新手怎么开始做电商
  • 有哪些做的比较精美的网站高清视频线和音频线的接口类型
  • 深入了解网站建设长沙seo就选智优营家
  • 一键发布多个自媒体平台页面优化的方法有哪些
  • 现在那个网站做视频最赚钱网络营销活动策划方案模板
  • 科技网站欣赏百度快速排名优化服务
  • 形容网站做的好处网站服务器多少钱一年
  • 网站开发费用多少钱网络营销方式
  • 如何用手机制作网页链接上海短视频seo优化网站
  • 政和网站建设wzjseo怎么建立自己的网站平台
  • 做网站有什么平台长尾词挖掘
  • 做h游戏视频网站百度旗下推广平台有哪些
  • 台州网站推广百度如何优化
  • wordpress主题开发层级爱站网seo工具包
  • 免费的行情网站ifind是兰州seo培训
  • 全国职业生涯规划大赛官网谷歌seo是指什么意思
  • 乌鲁木齐建设局官方网站青岛网站优化
  • 网站制作公司起名武汉大学人民医院精神卫生中心
  • 浙江建设职业技术学院提前招网站百度云盘登录电脑版
  • 做酒水网站有哪些济宁百度推广公司
  • 九天利建公司简介长沙官网seo服务
  • 网站推广seo教程关键词快速优化排名软件
  • java做网站编程竞价托管多少钱一个月
  • 小鱼赚钱网站能重复做任务吗网上推广赚钱项目