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

网站入口门户谷歌seo优化怎么做

网站入口门户,谷歌seo优化怎么做,软件的开发流程,厦门市住房和城乡建设局由于项目需要训练一个主干网络接多个分支的模型,所以先训练一个主干网络加第一个分支,再用另外的数据训练第二个分支,训练的过程中需要冻结主干网络部分,后面的分支训练过程也一样需要冻结主干网络部分。 冻结模型的方式 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.yayakq.cn/news/743548/

相关文章:

  • 天津中小企业建设网站金溪县建设局网站
  • 品牌网站设计服务wordpress自定义页面跳转
  • 网站首页制作方案南京本地网站建站
  • 宁夏网站制作怎么做脱机网站
  • 赶集网网站建设分析做淘宝客网站能赚到钱吗
  • 历史上的今天 网站如何做深圳电商平台网站
  • 免费上线个人网站贵州成品网站
  • 国贸网站建设公司网站定制开发注意事项
  • 重庆建筑工程网站设计wordpress主题下载
  • 浙江嘉兴建设局网站大连的网页设计公司
  • 用wordpress做的外贸网站旅游网站设计开题报告
  • 彩票网站建设服务天津定制网络营销公司
  • 社区网站如何做内容运营搜索电商怎么做
  • 杨颖做的车网站哪个网站可以做照片分享
  • 开福区网站建设论坛青岛手机网站设计公司
  • 网站开发需要哪些人才企业网络推广怎么做
  • 大连企业模板建站做网站的市场前景
  • mvc中手把手做网站百度识图 上传图片
  • 建网页放到什么网站上建设网站一般多少钱
  • 南宁网站设计制作公司微信推广方案
  • 杭州优化建筑设计厦门网站建设优化企业
  • 北京西站到北京南站多元国际二维码入口
  • word链接点进去是网站怎么做网站怎么做图片动态图
  • 网页设计认证培训上海优化营商环境
  • 广东湛江网站建设wordpress仿站抓取软件
  • dz论坛网站后台设置网站编程 外包类型
  • 软件开发和网站开发的区别购物商城网站
  • 做exo小说的网站南宁建站官网
  • 中国建设银行车主卡网站网站交互效果
  • 网站开发客户流程 6个阶段wordpress改中文