位置: IT常识 - 正文

深度学习参数初始化(二)Kaiming初始化 含代码

编辑:rootadmin
深度学习参数初始化(二)Kaiming初始化 含代码

推荐整理分享深度学习参数初始化(二)Kaiming初始化 含代码,希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

目录

一、介绍

二、基础知识

三、Kaiming初始化的假设条件 

四、Kaiming初始化的简单的公式推导

1.前向传播

2.反向传播

五、Pytorch实现

深度学习参数初始化系列:

(一)Xavier初始化 含代码

(二)Kaiming初始化 含代码

一、介绍

        Kaiming初始化论文地址:https://arxiv.org/abs/1502.01852

        Xavier初始化在ReLU层表现不好,主要原因是relu层会将负数映射到0,影响整体方差。而且Xavier初始化方法适用的激活函数有限:要求关于0对称;线性。而ReLU激活函数并不满足这些条件,实验也可以验证Xavier初始化确实不适用于ReLU激活函数。所以何恺明在对此做了改进,提出Kaiming初始化,一开始主要应用于计算机视觉、卷积网络。

二、基础知识

1.假设随机变量X和随机变量Y相互独立,则有

        (1) 

 2.通过期望求方差的公式, 方差等于平方的期望减去期望的平方.

                (2)

 3.独立变量乘积公式

        (3)

4.连续性随机变量X的概率密度函数为f(x),若积分绝对收敛,则期望公式如下:

                        (4)

三、Kaiming初始化的假设条件 

        与Xavier初始化相似,Kaiming初始化同样适用Glorot条件,即我们的初始化策略应该使得各层的激活值和状态梯度的方差在传播过程中的方差保持一致;Kaiming初始化的参数仍然满足均值是0,且更新的过程中权重的均值一直是0。

        与Xavier初始化不同的,Kaiming初始化不在要求每层输出均值都是0(因为Relu这样的激活函数做不到啊);当然也不再要求f′(0)=1。

        Kaiming初始化中,前向传播和反向传播时各自使用自己的初始化策略,但是保证前向传播时每层的方差和反向传播时梯度的方差都是1。

四、Kaiming初始化的简单的公式推导

        我们使用卷积来进行推导,并且激活函数使用ReLU。

1.前向传播

        对于一层卷积,有:

                        (5)

         其中是激活函数前的输出,是权重的个数,是权重,是输入。

        根据(3)式,可将(4)式推导为:

        (6)

         根据假设,但是是上一层通过ReLU得到的,所以,则:

                (7)

 通过(2)式可得,则(7)式推导为:

深度学习参数初始化(二)Kaiming初始化 含代码

                        (8)

根据期望公式(4), 通过第层的输出来求此期望, 我们有, 其中表示ReLU函数.

                         (9)

其中表示概率密度函数,因为的时候,所以可以去掉小于0的区间, 并且大于0的时候,可推出:

                   (10)

因为是假设在0周围对称分布且均值为0, 所以也是在0附近分布是对称的, 并且均值为0(此处假设偏置为0),则

       (11) 

所以的期望是:

              (12)

 根据公式(2),因为的期望等于0,于是有:

则式(12)推导为:

                        (13)

将(13)式带入(8)式:

                        (14)

从第一层一直往前进行前向传播, 可以得到某层的方差为 :

这里的就是输入的样本, 我们会将其归一化处理, 所以, 现在让每层输出方差等于1, 即:

于是正向传播时,Kaiming初始化的实现就是下面的均匀分布:

高斯分布:

2.反向传播

因为反向传播的时候

                (15)

 其中表示损失函数对其求导. 为参数

根据(3)式:

 其中表示反向传播时输出通道数,最后得出

于是反向传播时,Kaiming初始化的实现就是下面的均匀分布:

高斯分布:

五、Pytorch实现import torchclass DemoNet(torch.nn.Module): def __init__(self): super(DemoNet, self).__init__() self.conv1 = torch.nn.Conv2d(1, 1, 3) print('random init:', self.conv1.weight) ''' kaiming 初始化方法中服从均匀分布 U~(-bound, bound), bound = sqrt(6/(1+a^2)*fan_in) a 为激活函数的负半轴的斜率,relu 是 0 mode- 可选为 fan_in 或 fan_out, fan_in 使正向传播时,方差一致; fan_out 使反向传播时,方差一致 nonlinearity- 可选 relu 和 leaky_relu ,默认值为 。 leaky_relu ''' torch.nn.init.kaiming_uniform_(self.conv1.weight, a=0, mode='fan_out') print('xavier_uniform_:', self.conv1.weight) ''' kaiming 初始化方法中服从正态分布,此为 0 均值的正态分布,N~ (0,std),其中 std = sqrt(2/(1+a^2)*fan_in) a 为激活函数的负半轴的斜率,relu 是 0 mode- 可选为 fan_in 或 fan_out, fan_in 使正向传播时,方差一致;fan_out 使反向传播时,方差一致 nonlinearity- 可选 relu 和 leaky_relu ,默认值为 。 leaky_relu ''' torch.nn.init.kaiming_normal_(self.conv1.weight, a=0, mode='fan_out') print('kaiming_normal_:', self.conv1.weight)if __name__ == '__main__': demoNet = DemoNet()
本文链接地址:https://www.jiuchutong.com/zhishi/300432.html 转载请保留说明!

上一篇:微信小程序获取用户openid(微信小程序获取手机号失败)

下一篇:学习CSS3,使用双旋转实现福到了的迎春喜庆特效(css3知识总结)

  • 海南增值税发票图片
  • 资本公积和盈余公积怎么提取
  • 税务季度申报如何网上申报填写
  • 个人所得税怎么算公式是什么
  • 企业筹办期间发生的开办费会计分录
  • 嵌入式软件产品的批准放行
  • 个人股权转让需要注意什么
  • 外出采购材料分录
  • 评估费是必须花的吗
  • 会计去报税流程
  • 详解劳务报酬个人所得税应该怎么计算?
  • 金税盘减免分录
  • 普通发票离线限额为0
  • 建筑企业的职工由于不服管理违反规章制度
  • 股权成本计算公式rd
  • 购买标书的费用计入什么科目
  • 员工承担补缴社保的责任
  • 固定资产加速折旧最新政策2023
  • 借款的印花税入哪个账户
  • 消费税如何避税计算
  • 药店销售小票要保存多久
  • 四种存款账户的定义
  • 间断性断网
  • win7系统鼠标键盘
  • win10 批量安装软件
  • windows闹钟
  • win7bios网络启动
  • 小规模纳税人进口增值税怎么处理
  • 留抵增值税可以冲营业外支出吗
  • php动态页面实例
  • 红字发票负数要怎么抵掉
  • 史上最贵的微博
  • 费尔南迪纳岛气候类型
  • 社保缴费基数如何调整
  • 房地产企业借款可以用未建成的房子设定浮动抵押吗?
  • 汽车客运补充车道标志
  • php开发模板
  • 购买电脑如何入账
  • 小规模纳税人增值税免税政策
  • uniapp零基础小白到项目实战
  • Chat GPT5如果问世会对世界产生什么影响?以及未来chat gpt 5会取代什么类型的工作。
  • 清除命令窗口所有内容用()命令,清除变量用()命令
  • ci框架过时了吗
  • php 引用
  • python中写函数
  • 发票货物或应税劳务名称怎么填写
  • 企业微信如何微信认证
  • 新建厂房如何计提折旧费用
  • 土石方工程的税费缴纳方法
  • 公司车辆固定资产转移税
  • access微软
  • nginx防盗链的作用
  • 建筑业差额纳税申报
  • 财务报表信息的分类
  • 公司买15万的车可以抵扣多少税
  • 期初余额调整怎么做凭证
  • 金税四期什么时候全国运行
  • 临时用工费开票项目
  • 用于餐厅的不锈钢餐具
  • 外贸年底抵扣不抵税
  • 增值税进项发票如何做账
  • 收到的发票怎么做分录
  • 金融资产减值损失
  • sql自定义变量
  • win8.1怎么改win7系统
  • centos安装常用命令
  • 重装xp系统后键盘没反应
  • winxp教程
  • Win7 64位旗舰版设置字体显示比例让字体变大
  • libts.so.0
  • 红石数据
  • opengl绘制图形旋转
  • alt用不了
  • visual studio 10 cocos2dx项目移植到eclipse的android项目(配置请参照上一篇文章开发环境搭建)
  • vtk下载步骤
  • nodejs快速入门
  • 酷狗模拟器
  • linux怎样添加用户
  • jquery如何解决跨域问题
  • python3 flask
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设