17 初始化权值

模型训练的时候会首先对权值矩阵和偏置进行初始化。有的是把权值初始化为0,但是这种情况不能适用于带有梯度下降算法的网络。因为每次的残差都一样,那么网络参数就达不到最优了。所以一般常用的就是随机数初始化,保证每个参数都不重复,但是差值也不会很大。随机数初始化一般按照概率分布去取值,比如常用的均匀分布等。

一、如何初始化
在Keras中对权值矩阵初始化的方式很简单,就是在add某一层时,同时注明初始化该层的概率分布是什么就可以了。代码如下:

# init是关键字,’uniform’表示用均匀分布去初始化  
model.add(Dense(64, init='uniform')) 

二、常用的初始化方法
在Keras里边内置提供了多种初始化方法。

  • Uniform(scale=0.05) :均匀分布,最常用的。Scale就是均匀分布的每个数据在-scalescale之间。此处就是-0.050.05。scale默认值是0.05;
  • lecun_uniform:是在LeCun在98年发表的论文中基于uniform的一种方法。区别就是lecun_uniform的scale=sqrt(3/f_in)。f_in就是待初始化权值矩阵的行。
  • Normal:正态分布(高斯分布)。
  • Identity :用于2维方阵,返回一个单位阵
  • Orthogonal:用于2维方阵,返回一个正交矩阵。
  • Zero:产生一个全0矩阵。
  • glorot_normal:基于normal分布,normal的默认 sigma2=scale=0.05,而此处sigma2=scale=sqrt(2 / (f_in+ f_out)),其中,f_in和f_out是待初始化矩阵的行和列。
  • glorot_uniform:基于uniform分布,uniform的默认scale=0.05,而此处* scale=sqrt( 6 / (f_in +f_out)) ,其中,f_in和f_out是待初始化矩阵的行和列。
  • he_normal:基于normal分布,normal的默认 scale=0.05,而此处scale=sqrt(2 / f_in),其中,f_in是待初始化矩阵的行。
  • he_uniform:基于uniform分布,uniform的默认scale=0.05,而此处scale=sqrt( 6 / f_in),其中,f_in待初始化矩阵的行。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Keras-mnist111 日期:2016 /06 /03 15:15:52 版本 python ?? !/us...
    Double_E阅读 1,294评论 0 2
  • 失败并不是成功之母,成功诞生成功,成功和失败是一对近义词,他们共同的反义词是什么都不干。
    wangzi04阅读 200评论 0 0
  • 文/不二 又是一年秋叶红。 红叶无疑是秋天的主角,秋天因为红叶而变得愈发绚烂,它和蓝空、金野、碧水组合出绝美的秋之...
    王不二的自留地阅读 891评论 0 1

友情链接更多精彩内容