tensorflow 参数初始化

2019-08-07  本文已影响0人  snowpigppp

tf.constant_initializer()

用常数初始化参数,通常用于初始化偏置项。

conv1 = tf.layers.conv2d(batch_images, 
                         filters=64,
                         kernel_size=7,
                         strides=2,
                         activation=tf.nn.relu,     
                         kernel_initializer=tf.TruncatedNormal(stddev=0.01)
                         bias_initializer=tf.Constant(0)
                        )
# 初始化为0的四种方法
# bias_initializer=tf.constant_initializer(0)
# bias_initializer=tf.zeros_initializer()
# bias_initializer=tf.Zeros()

tf.truncated_normal_initializer()

或写作tf.TruncatedNormal()
生成截断正态分布的随机数,有四个参数(mean=0.0, stddev=1.0, seed=None, dtype=dtypes.float32),分别用于指定均值、标准差、随机数种子和随机数的数据类型, 一般只需要设置stddev这一个参数就可以了.

conv1 = tf.layers.conv2d(batch_images, 
                         filters=64,
                         kernel_size=7,
                         strides=2,
                         activation=tf.nn.relu,
                         kernel_initializer=tf.TruncatedNormal(stddev=0.01)
                         # kernel_initializer=tf.truncated_normal_initializer(stddev=0.01)
                         bias_initializer=tf.Constant(0))

tf.random_normal_initializer()

可简写为 tf.RandomNormal()
生成标准正态分布的随机数,参数和truncated_normal_initializer一样。

tf.random_uniform_initializer

可简写为tf.RandomUniform()
生成均匀分布的随机数,参数有四个(minval=0, maxval=None, seed=None, dtype=dtypes.float32),分别用于指定最小值,最大值,随机数种子和类型。

tf.uniform_unit_scaling_initializer()

可简写为tf.UniformUnitScaling()
和均匀分布差不多,只是这个初始化方法不需要指定最小最大值,是通过计算出来的。参数为(factor=1.0, seed=None, dtype=dtypes.float32)
max_val = math.sqrt(3 / input_size) * factor
这里的input_size是指输入数据的维数,假设输入为x, 运算为x * W,则
input_size= W.shape[0]
它的分布区间为[ -max_val, max_val]

tf.variance_scaling_initializer()

可简写为tf.VarianceScaling()
参数为(scale=1.0,mode=”fan_in”,distribution=”normal”,seed=None,dtype=dtypes.float32)

上一篇 下一篇

猜你喜欢

热点阅读