• tensorflow参数初始化


    转自:https://zhuanlan.zhihu.com/p/40117857

    1、tf.constant_initializer()可以简写为tf.Constant();初始化为常数,这个非常有用,通常偏置项就是用它初始化的

    由它衍生出的两个初始化方法:

    a、 tf.zeros_initializer(),也可以简写为tf.Zeros()

    b、tf.ones_initializer(), 也可以简写为tf.Ones()

    2、tf.truncated_normal_initializer()

    或者简写为tf.TruncatedNormal()

    生成截断正态分布的随机数,这个初始化方法好像在tf中用得比较多。

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

    3、tf.random_normal_initializer()

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

    4、random_uniform_initializer = RandomUniform()

    可简写为tf.RandomUniform()

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

    5、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]

    6、tf.variance_scaling_initializer()

    可简写为tf.VarianceScaling()

    参数为(scale=1.0,mode="fan_in",distribution="normal",seed=None,dtype=dtypes.float32)

    scale: 缩放尺度(正浮点数)

    mode: "fan_in", "fan_out", "fan_avg"中的一个,用于计算标准差stddev的值。

    distribution:分布类型,"normal"或“uniform"中的一个。

    当 distribution="normal" 的时候,生成truncated normal distribution(截断正态分布) 的随机数,其中stddev = sqrt(scale / n) ,n的计算与mode参数有关。

    如果mode = "fan_in", n为输入单元的结点数;

    如果mode = "fan_out",n为输出单元的结点数;

    如果mode = "fan_avg",n为输入和输出单元结点数的平均值。

    当distribution="uniform”的时候 ,生成均匀分布的随机数,假设分布区间为[-limit, limit],则

    limit = sqrt(3 * scale / n)

    7、tf.orthogonal_initializer()

    简写为tf.Orthogonal()

    生成正交矩阵的随机数。

    当需要生成的参数是2维时,这个正交矩阵是由均匀分布的随机数矩阵经过SVD分解而来。

    8、tf.glorot_uniform_initializer()

    也称之为Xavier uniform initializer,由一个均匀分布(uniform distribution)来初始化数据。

    假设均匀分布的区间是[-limit, limit],则

    limit=sqrt(6 / (fan_in + fan_out))

    其中的fan_in和fan_out分别表示输入单元的结点数和输出单元的结点数。

    9、glorot_normal_initializer()

    也称之为 Xavier normal initializer. 由一个 truncated normal distribution来初始化数据.

    stddev = sqrt(2 / (fan_in + fan_out))

    其中的fan_in和fan_out分别表示输入单元的结点数和输出单元的结点数。

  • 相关阅读:
    eclipse常用快捷键
    Sql server 问题诊断
    Oracle 表格大小分析
    VM虚拟机增加磁盘空间
    Linux搭建Nexus+Maven私人仓库
    Linux 下安装Git 版本管理工具 使用记录
    Jenkins 环境打建设 Linux
    Oracle 数据库用户表大小分析
    Windgb 其他常用命令
    Windbg 查内存占用
  • 原文地址:https://www.cnblogs.com/cxhzy/p/15592637.html
Copyright © 2020-2023  润新知