全零初始化
tflearn.initializations.zeros (shape=None, dtype=tf.float32, seed=None)
初始化一个所有元素都设置为零的张量。
参数
- shape: 整数列表。用于初始化张量的形状(可选)。
- dtype: 张量数据类型。
返回值
初始化器,如果指定了形状,则返回初始化后的 `Tensor`。
均匀分布初始化
tflearn.initializations.uniform (shape=None, minval=0, maxval=None, dtype=tf.float32, seed=None)
使用均匀分布中的随机值进行初始化。
生成的值遵循 `[minval, maxval)` 范围内的均匀分布。下限 `minval` 包含在范围内,而上限 `maxval` 不包含在范围内。
对于浮点数,默认范围是 `[0, 1)`。对于整数,至少必须明确指定 `maxval`。
在整数情况下,除非 `maxval - minval` 是 2 的精确幂,否则随机整数会略有偏差。对于远小于输出范围(`2**32` 或 `2**64`)的 `maxval - minval` 值,偏差很小。
参数
- shape: 整数列表。用于初始化张量的形状(可选)。
- dtype: 张量数据类型。仅支持浮点数。
- seed: 整数。用于为分布创建随机种子。
返回值
初始化器,如果指定了形状,则返回初始化后的 `Tensor`。
均匀缩放初始化
tflearn.initializations.uniform_scaling (shape=None, factor=1.0, dtype=tf.float32, seed=None)
使用均匀分布中的随机值进行初始化,无需缩放方差。
在初始化深度网络时,原则上保持输入方差的规模不变是有利的,这样它就不会在到达最后一层时爆炸或消失。如果输入是 `x` 并且操作是 `x * W`,并且我们想随机均匀地初始化 `W`,我们需要从
[-sqrt(3) / sqrt(dim), sqrt(3) / sqrt(dim)]
中选择 `W` 以保持规模不变,其中 `dim = W.shape[0]`(输入的大小)。卷积网络的类似计算给出了类似的结果,其中 `dim` 等于前 3 个维度的乘积。当存在非线性时,我们需要将其乘以一个常数 `factor`。有关更深层的动机、实验和常数计算,请参阅 Sussillo 等人,2014 年(pdf)。在第 2.3 节中,常数是通过数值计算得出的:对于线性层,它是 1.0,relu:~1.43,tanh:~1.15。
参数
- shape: 整数列表。用于初始化张量的形状(可选)。
- factor: 浮点数。将缩放值的乘法因子。
- dtype: 张量数据类型。仅支持浮点数。
- seed: 整数。用于为分布创建随机种子。
返回值
初始化器,如果指定了形状,则返回初始化后的 `Tensor`。
正态分布初始化
tflearn.initializations.normal (shape=None, mean=0.0, stddev=0.02, dtype=tf.float32, seed=None)
使用正态分布中的随机值进行初始化。
参数
- shape: 整数列表。用于初始化张量的形状(可选)。
- mean: 与 `dtype` 相同。截断正态分布的均值。
- stddev: 与 `dtype` 相同。截断正态分布的标准差。
- dtype: 张量数据类型。
- seed: 整数。用于为分布创建随机种子。
返回值
初始化器,如果指定了形状,则返回初始化后的 `Tensor`。
截断正态分布初始化
tflearn.initializations.truncated_normal (shape=None, mean=0.0, stddev=0.02, dtype=tf.float32, seed=None)
使用截断正态分布中的随机值进行初始化。
生成的值遵循具有指定均值和标准差的正态分布,但幅度超过均值 2 个标准差的值将被丢弃并重新选择。
参数
- shape: 整数列表。用于初始化张量的形状(可选)。
- mean: 与 `dtype` 相同。截断正态分布的均值。
- stddev: 与 `dtype` 相同。截断正态分布的标准差。
- dtype: 张量数据类型。
- seed: 整数。用于为分布创建随机种子。
返回值
初始化器,如果指定了形状,则返回初始化后的 `Tensor`。
Xavier 初始化
tflearn.initializations.xavier (uniform=True, seed=None, dtype=tf.float32)
返回一个对权重执行“Xavier”初始化的初始化器。
此初始化器旨在使梯度的规模在所有层中大致相同。在均匀分布中,最终范围为:`x = sqrt(6. / (in + out)); [-x, x]`,对于正态分布,使用 `sqrt(3. / (in + out))` 的标准差。
参数
- uniform: 是否使用均匀分布或正态分布的随机初始化。
- seed: Python 整数。用于创建随机种子。有关行为,请参阅 `set_random_seed`。
- dtype: 数据类型。仅支持浮点类型。
返回值
权重矩阵的初始化器。
参考文献
了解训练深度前馈神经网络的难度。国际人工智能与统计会议。Xavier Glorot 和 Yoshua Bengio(2010 年)。
链接
http://jmlr.org/proceedings/papers/v9/glorot10a/glorot10a.pdf
方差缩放初始化
tflearn.initializations.variance_scaling (factor=2.0, mode='FAN_IN', uniform=False, seed=None, dtype=tf.float32)
返回一个生成不缩放方差的张量的初始化器。
在初始化深度网络时,原则上保持输入方差的规模不变是有利的,这样它就不会在到达最后一层时爆炸或消失。此初始化器使用以下公式
if mode='FAN_IN': # Count only number of input connections.
n = fan_in
elif mode='FAN_OUT': # Count only number of output connections.
n = fan_out
elif mode='FAN_AVG': # Average number of inputs and output connections.
n = (fan_in + fan_out)/2.0
truncated_normal(shape, 0.0, stddev=sqrt(factor / n))
要获取 http://arxiv.org/pdf/1502.01852v1.pdf,请使用(默认值):- factor=2.0 mode='FAN_IN' uniform=False
要获取 http://arxiv.org/abs/1408.5093,请使用:- factor=1.0 mode='FAN_IN' uniform=True
要获取 http://jmlr.org/proceedings/papers/v9/glorot10a/glorot10a.pdf,请使用:- factor=1.0 mode='FAN_AVG' uniform=True。
要获取 xavier_initializer,请使用以下任一项:- factor=1.0 mode='FAN_AVG' uniform=True。- factor=1.0 mode='FAN_AVG' uniform=False。
参数
- factor: 浮点数。乘法因子。
- mode: 字符串。'FAN_IN'、'FAN_OUT'、'FAN_AVG'。
- uniform: 是否使用均匀分布或正态分布的随机初始化。
- seed: Python 整数。用于创建随机种子。有关行为,请参阅 `set_random_seed`。
- dtype: 数据类型。仅支持浮点类型。
返回值
一个生成具有单位方差的张量的初始化器。