基于Theano的深度学习(Deep Learning)框架Keras学习随笔-07-初始化权值

        原地址:http://blog.csdn.net/niuwei22007/article/details/49226495可以查看更多文章

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

一、如何初始化

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

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

二、常用的初始化方法

        在Keras里边内置提供了多种初始化方法。

  • Uniform(scale=0.05) :均匀分布,最常用的。Scale就是均匀分布的每个数据在-scale~scale之间。此处就是-0.05~0.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的默认 sigma^2=scale=0.05,而此处sigma^2=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待初始化矩阵的行。 

参考资料:

  • 官方教程

你可能感兴趣的:(深度学习,Keras,theano,keras教程,Initializations)