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,或者有你。现在,初始化器在W中,tensorflow是如何显示激活的?或者我必须介入,知道我将要使用的激活?
看看初始化器中的参数,我可以选择unifrom或正态分布。但这并不能解决问题,对吧?
发布于 2016-09-09 18:41:47
初始化的标准偏差取决于所使用的非线性.对吗?
不是的。Xavier初始化不需要知道任何关于网络使用的非线性的信息。
实际上,Xavier初始化只是权值的初始化,从均值=0和方差= 1/<number_of_inputs>
的随机分布中选择值。
声明变量时,传递shape
参数。形状参数的第一个维度是<number_of_inputs>
。
也许您正在寻找专门为ReLU e PReLU定义的He初始化,但是即使在这种情况下,变量初始化也不需要知道随后会出现什么非线性。
https://stackoverflow.com/questions/39415539
复制相似问题