【深度学习实战(12)】训练之模型参数初始化

news/2024/10/24 10:14:36/

深度学习模型的训练中,权重的初始值极为重要。一个好的初始值,会使模型收敛速度提高,使模型准确率更精确。一般情况下,我们不使用全0初始值训练网络。为了利于训练和减少收敛时间,我们需要对模型进行合理的初始化。

一、初始化方式

在常见的CNN深度学习模型中,最常出现的是Conv卷积BatchNorm算子
(1)对于Conv卷积,权重初始化的方式有‘normal’‘xavier’,‘kaiming’,‘orthogonal’

  • ‘normal’方式为例:对Conv卷积的weight通常是以均值为0,标准差为0.02的正态分布进行参数初始化

(2)对于BatchNorm算子,通常是使用‘normal’方式进行初始化

  • weight通常是以均值为1,标准差为0.02的正态分布进行参数初始化
  • bias通常是以方差为0的正态分布进行参数初始化

二、代码

def weights_init(net, init_type='normal', init_gain = 0.02):def init_func(m):classname = m.__class__.__name__if hasattr(m, 'weight') and classname.find('Conv') != -1:if init_type == 'normal':# ---------------------------------------------##   Conv weight:均值为0,标准差为0.02的正态分布# ---------------------------------------------#torch.nn.init.normal_(m.weight.data, 0.0, init_gain)elif init_type == 'xavier':torch.nn.init.xavier_normal_(m.weight.data, gain=init_gain)elif init_type == 'kaiming':torch.nn.init.kaiming_normal_(m.weight.data, a=0, mode='fan_in')elif init_type == 'orthogonal':torch.nn.init.orthogonal_(m.weight.data, gain=init_gain)else:raise NotImplementedError('initialization method [%s] is not implemented' % init_type)elif classname.find('BatchNorm2d') != -1:# ---------------------------##   BN weight:均值为1,标准差为0.02的正态分布# ---------------------------#torch.nn.init.normal_(m.weight.data, 1.0, 0.02)# ---------------------------##   BN bias:方差为0的正态分布# ---------------------------#torch.nn.init.constant_(m.bias.data, 0.0)print('initialize network with %s type' % init_type)net.apply(init_func)

debug查看
在执行weights_init函数之前,model.Dethead.obj_preds.weight的数值为
在这里插入图片描述
在执行weights_init函数之后,model.Dethead.obj_preds.weight的数值为
在这里插入图片描述


http://www.ppmy.cn/news/1426178.html

相关文章

记录一个hive中因没启yarn导致的spark引擎跑insert语句的报错

【背景说明】 刚在hive中配置了Spark引擎,在进行Hive on Spark测试时报错, 报错截图如下: [atguiguhadoop102 conf]$ hive which: no hbase in (/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/module/jdk1.8.0_212/bin:/opt/mod…

前端开发与html学习笔记

一、前端开发概述 前端开发:也叫做web前端开发,它指的是基于web的互联网产品的页面(也可叫界面)开发及功能开发互联网产品:指网站为满足用户需求而创建的用于运营的功能及服务,百度搜索、淘宝、QQ、微博、网易邮箱等都是互联网产…

如何搭建线下陪玩系统(本地伴游、多玩圈子)APP小程序H5多端前后端源码交付,支持二开!

一、卡顿的优化方法 1、对陪玩系统源码中流媒体传输的上行进行优化,通过提升推流端的设备性能配置、推流边缘CDN节点就近选择等方式解决音视频数据源流的卡顿。 2、对陪玩系统源码中音视频数据的下载链路进行优化,通过选择更近更优质的CDN边缘节点来减少…

WordPress 多站点切换域名完整指南:详细步骤和注意事项

因为公司的需要,需要对 WordPress 多站点进行域名切换, 一开始我也找了相关的方案和教程,但是很可惜,国内这一块网上的资料几乎为0,所以我把实现的过程写了一篇文章分享出来,为后来的人铺路。 开始之前,先…

【项目实战】记录一次PG数据库迁移至GaussDB测试(下)

上一篇分享了安装、迁移,本篇将继续分享迁移前操作、 DRS迁移数据、迁移后一致性检查、问题总结及解决方法。 目录 四、迁移前操作 4.1 源端(PG) 4.2 目标端(GaussDB库) 五、DRS迁移数据 5.1 创建复制用户 5.2创建迁移任务。 六、迁移后一致性检查 6.1使用…

mongodbTemplate 修改JSON [key: ‘1‘, key2: [{id:1, name: ‘name‘}] 中 key2.name属性

问题描述 mongodbTemplate 修改JSON [key: ‘1‘, key2: [{id:1, name: ‘name‘}] 中 key2.name属性 代码 Query query Query.query(Criteria.where("key").is(1) .and("key2.id").is(1) …

欢迎 Llama 3:Meta 的新一代开源大语言模型

介绍 Meta 公司的 Llama 3 是开放获取的 Llama 系列的最新版本,现已在 Hugging Face 平台发布。看到 Meta 持续致力于开放 AI 领域的发展令人振奋,我们也非常高兴地全力支持此次发布,并实现了与 Hugging Face 生态系统的深度集成。 Llama 3 提…

小程序AI智能名片S2B2C商城系统:做内容、造IP、玩社群打造私域流量的新营销秘籍

在数字化浪潮汹涌的新时代,小程序AI智能名片S2B2C商城系统正以其独特的魅力,引领着营销领域的新变革。这套系统不仅将人工智能与小程序技术完美结合,更通过创新的S2B2C模式,为企业打开了一扇通往成功的大门。 面对激烈的市场竞争&…