2022-02-11
CNN中最重要的是参数,包括W,b。我们训练CNN的最终目标是得到最好的参数,使目标函数达到最小值。参数的初始化也很重要,所以很多人关注微调。那么tf提供了哪些方法来初始化参数,我们可以自己初始化吗?
所有初始化方法都定义在 //ops/.py
1、tf.()
也可以简写为 tf.()
初始化为常数,这非常有用,通常偏置项用它初始化。
从它派生的两个初始化方法:
a、tf.(),也可以简写为tf.Zeros()
b、tf.(),也可以简写为tf.Ones()
例子:在卷积层,初始化偏置项b为0,有多种写法:
conv1 = tf..(, =64, =7, =2, =tf.nn.relu, =tf.(=0.01) =tf.(0), )
或者:
=tf.(0)
或者:
=tf.()
或者:
=tf.Zeros()
示例:如何将 W 初始化为拉普拉斯算子?
值 = [1, 1, 1, 1, -8, 1, 1, 1, 1]init = tf.(value)W= tf.(‘W’, shape=[3, 3], =init)
2、tf.()
或简写为 tf.()
生成截断正态分布的随机数。这种初始化方式似乎在 tf.
它有四个参数(mean=0.0,=1.0,seed=None,dtype=.),用于指定均值、标准差、随机数种子和随机数数据类型分别,一般只需要设置这一项参数。
例子:
conv1 = tf..(, =64, =7, =2, =tf.nn.relu, =tf.(=0.01) =tf.(0), )
或者:
conv1 = tf..(, =64, =7, =2, =tf.nn.relu, =tf.(=0.01) =tf.(), )
3、tf.lizer()
可简写为 tf.()
从具有相同参数的标准正态分布生成随机数。
4、= ()
可简写为 tf.()
生成均匀分布的随机数。有四个参数(=0,=None,seed=None,dtype=.),用于指定最小值、最大值、随机数种子和类型。
5、tf.()
可简写为 tf.()
类似于均匀分布,只不过这种初始化方式不需要指定最小值和最大值,是通过计算来计算的。参数为 (=1.0,seed=None,dtype=.)
=数学。sqrt(3 / ) *
这里是输入数据的维度,假设输入为x,运算为x * W,则=W.shape[0]
其分布区间为 [ -, ]
6、tf.()
可简写为 tf.()
参数为 (scale=1.0, mode=””,=””, seed=None, dtype=.)
scale:按比例缩放(正浮点数)
模式:“”,“”,“”之一,用于计算标准偏差的值。
: 分发类型,”” 或 “” 之一。
当 = “” 时,生成(截断正态分布)随机数,其中 = sqrt(scale / n),n 的计算与众数参数有关。
如果mode = “”,n是输入单元的节点数;
如果mode = “”,n是输出单元中的节点数;
如果 mode = “”,n 是输入和输出单元中节点数的平均值。
当 = “” 时,生成均匀分布的随机数,假设分布区间为[-limit, limit],则
限制 = sqrt(3 * 比例 / n)
7、tf.er()
tf.() 的简写
生成随机数的正交矩阵。
当要生成的参数是2维的时候,这个正交矩阵是通过SVD从一个均匀分布的随机数矩阵中分解出来的。
8、tf.()
也称为,使用均匀分布 ( ) 初始化数据。
假设均匀分布区间为[-limit,limit],则
限制=sqrt(6 / ( + ))
其中 和 分别表示输入单元中的节点数和输出单元中的节点数。
9、利泽()
也被称为。数据由 1 初始化。
= sqrt(2 / ( + ))
其中 和 分别表示输入单元中的节点数和输出单元数
分类:
技术要点:
相关文章:
暂无评论内容