目录

一、介绍

二、基础知识

三、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)式推导为:

                        (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 是 0mode- 可选为 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 是 0mode- 可选为 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()

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

  1. 基于深度学习的自动调制识别(含代码链接)

    AMR领域具有代表性的新模型在四个不同的数据集(RML2016.10a, RML2016.10b, RML2018.01a, HisarMod2019.1)上的实现,为感兴趣的研究人员提供统一的参考. ...

  2. 神经网络与深度学习笔记汇总二

    神经网络与深度学习笔记汇总二 正交化(方便调整参数) 迭代 单实数评估指标(判断几种手段/方法哪个更好) 指标选取 训练集.开发集.测试集作用与用途 评估指标 判断算法是好是坏 迁移学习 总结 往期回 ...

  3. 深度学习入门(二十四)卷积神经网络——填充和步幅

    深度学习入门(二十四)卷积神经网络--填充和步幅 前言 卷积神经网络--填充和步幅 课件 填充 步幅 总结 课本 1 填充 2 步幅 3 小结 前言 核心内容来自博客链接1博客连接2希望大家多多支持作 ...

  4. Tensorflow深度学习之十二:基础图像处理之二

    Tensorflow深度学习之十二:基础图像处理之二 from:https://blog.csdn.net/davincil/article/details/76598474   首先放出原始图像: ...

  5. 从零开始编写深度学习库(二)FullyconnecteLayer CPU编写

    从零开始编写深度学习库(二)FullyconnecteLayer CPU编写 博客:http://blog.csdn.net/hjimce 微博:黄锦池-hjimce   qq:1393852684 ...

  6. 产品经理之深度学习促进产品(二)

    产品经理之深度学习促进产品(二) 案例一 阿里巴巴 电子商务公司阿里巴巴通过大数据技术获取企业交易数据,自动分析和预测是否增加对企业的贷款,整个过程没有人工介入,全部为自动化处理. 到目前为止,阿里巴 ...

  7. 前几帧预测 深度学习_使用深度学习从十二导联心电图预测心律失常

    上集讲到 使用深度学习 从单导联预测房颤 这一集 将继续讨论该问题 单导联心电图 对心律失常的预测作用 非常有限 因为 单导联的信号很有限 临床上需要结合 多导联心电图 判断 心律失常的类型 这一集的 ...

  8. 花书+吴恩达深度学习(十二)卷积神经网络 CNN 之全连接层

    目录 0. 前言 1. 全连接层(fully connected layer) 如果这篇文章对你有一点小小的帮助,请给个关注,点个赞喔~我会非常开心的~ 花书+吴恩达深度学习(十)卷积神经网络 CNN ...

  9. 深度学习笔记(二)图像分类实践

    深度学习笔记(二)图像分类实践 使用keras中的ResNet模型进行图像处理记忆预测 import keras #import tensorflow from keras.applications. ...

最新文章

  1. PHP MySql数据库访问
  2. 用工具批量下载哔哩哔哩视频并且将内容转换成pdf
  3. Android6.0的Looper源码分析(1)
  4. SAP Fiori Elements原理介绍之类型为Value Help的Smart Field工作原理
  5. 为Mac安装homebrew
  6. 【转载】Android 关于arm64-v8a、armeabi-v7a、armeabi、x86下的so文件兼容问题
  7. 单条MySQL最长_MySQL 单条记录长度最大65535
  8. android:descendantFocusability用法
  9. 深度学习目标检测网络FPN tensorflow升3d尝试
  10. C++算法学习(力扣:402. 移掉K位数字)
  11. 基于.NET CompactFramework的九宫格控件(附源码)
  12. 笔记本自动切换内外网
  13. 神仙软件商店:到这儿买软件会员最多打5折,各种绿色开源软件还应有尽有
  14. P2437 蜜蜂路线
  15. scp命令传输文件,显示的ETA符号是什么意思
  16. 爱立信也扛不住了?员工变外包,不接受拿N+1赔偿
  17. MATLAB: Table example
  18. 达思Linux数据恢复ext破解版,达思Linux数据恢复软件
  19. 风险类型说明和处理建议手册
  20. matlab仿真三相短路电路,同步发电机三相短路仿真分析

热门文章

  1. easyui combobox 拼音检索快捷选择输入
  2. swig使用方法介绍。
  3. android通过sd卡升级步骤,安卓手机用储存卡怎么升级具体步骤 ????
  4. JAVA工程师的工资真的很高吗?
  5. 非常好用的综合源码资源分享平台推荐,用它就够了
  6. Learning Rate Annealing
  7. 从2021年财报看京东的新型实体势能
  8. 计算机英语五人对话,一篇5人英语小对话,-五人英语对话加翻译-井睾品同学
  9. 《上古天真论》第九讲文字版
  10. WIZnet相关产品介绍