服从均匀分布的初始化
- random_uniform
- 自定义区间的均匀分布
tf.random_uniform(shape = (n_input, n_output),
minval=start, maxval=end, dtype=tf.float32)
- rand
- [0,1)区间的均匀分布
# 10行一列
X = np.random.rand(10,1)
"""
Create an array of the given shape and populate it with
random samples from a uniform distribution
over ``[0, 1)``.
"""
服从正态分布的初始化
- random_normal
- 生成正态分布随机数
- 定义均值与方差,shape可以用 () 表示,也可以用 [] 表示
def random_normal(shape,
mean=0.0,
stddev=1.0,
dtype=dtypes.float32,
seed=None,
name=None):
------------------------------------------------------------------------
initial = tf.random_normal(shape=shape, stddev=stddev, dtype=tf.float32)
tf.Variable(initial, dtype=tf.float32, name=name_str)
- truncated_normal
- 产生截断正态分布随机数
- 取值范围为 [ mean - 2 * stddev, mean + 2 * stddev ]
def truncated_normal(
shape,
mean=0.0,
stddev=1.0,
dtype=tf.float32,
seed=None,
name=None
)
--------------------------------------------------------------------------
initial = tf.truncated_normal(shape=shape, stddev=stddev, dtype=tf.float32)
- randn
- 均值为0方差为1的正态分布
# 10行一列
Y = np.random.randn(10,1)
Xavier均匀初始化
def xavier_init(n_input, n_output, constant=1):
start = -constant * np.sqrt(6.0/(n_input + n_output))
end = constant * np.sqrt(6.0/(n_input + n_output))
return tf.random_uniform((n_input, n_output), minval=start, maxval=end, dtype=tf.float32)
正态分布 与 均匀分布有什么不同
- 概率计算的方式不一样
不同初始化方式分别对训练结果有什么影响
均匀分布 与 正态分布
选择均匀分布的场景
- 分类的训练集太大,使用均匀分布随机抽取样本
- 如果使用正态分布,则会导致分类样本不均匀,比如学小猫的特征比较多,学小狗的特征比较少
------------------------------更新------------------------------
权重w 初始化方式
究竟什么东西影响着不同随机方式带来的效果
如何理解权重参数初始化不能近似于 0
- 感觉稀疏初始化不太好