tf.contrib.layers.xavier_initializer() 如何知道激活函数?
初始化良好的标准偏差取决于所使用的非线性。正确的?那么 tf.contrib.layers.xavier_initializer() 如何知道发生了什么?
看下面的案例:
W = tf.get_variable("W", shape=[784, 256],
initializer=tf.contrib.layers.xavier_initializer())
这个 W 对 X 执行一些操作,然后将结果传递给 tanh 或 relu 或 have you。现在,初始化器位于 W 中。 tensorflow 如何计算出激活值?或者我是否必须干预,知道我将要使用的激活?
查看 tf.contrib.layers.xavier_initializer 中的参数在那里我可以选择统一分布或正态分布。但这并不能解决问题,对吧?
最佳答案
The standard deviation to initialize well depends on the non-linearity used. Right?
没有。 Xavier 初始化不需要了解网络使用的非线性的任何信息。
事实上,Xavier 初始化只是权重的初始化,从平均值 = 0 且方差 = 1/<number_of_inputs>
的随机分布中选取值。 .
声明变量时,传递 shape
范围。形状参数的第一个维度是 <number_of_inputs>
.
也许您正在寻找专门为 ReLU e PReLU 定义的 He 初始化,但即使在这种情况下,变量初始化也不需要知道将遵循什么非线性
关于machine-learning - xavier_initializer() 如何知道激活?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39415539/