如何在TensorFlow中初始化LSTMCell单元中的权重

时间:2017-04-26 14:30:58

标签: python tensorflow

我在我的网络中使用LSTMCell单位,我无法弄清楚如何初始化此单位的权重。

我已经尝试过从方法到方法的代码,但我并不是100%确定这些代码是如何工作的。

在LSTMCell源代码中,以下行似乎初始化权重。来自contrib/rnn/python/ops/core_rnn_cell_impl.py

    [...]
    scope = vs.get_variable_scope()
    with vs.variable_scope(scope, initializer=self._initializer) as unit_scope:
        [...]

方法variable_scope以及如何定义范围也让我感到困惑,我不确定这个逻辑是如何工作的。

python/ops/variable_scope.py开始,方法variable_scope似乎调用了方法_pure_variable_scope,后者似乎又返回了VariableScope的实例,最终似乎调用了{{3} }}。 get_variable的{​​{3}}内容如下:

  

如果初始化程序为None(默认值),则传递默认初始化程序   将使用变量范围。如果那个也是None,那么   将使用glorot_uniform_initializer。初始化程序也可以   一个Tensor,在这种情况下变量被初始化为这个值和   形状

是否正确,除非未指定初始值设定项,否则将使用glorot_uniform_initializer初始化LSTMCell?

1 个答案:

答案 0 :(得分:1)

根据您对代码的跟踪,我认为您是正确的:LSTMCell将使用glorot_uniform_initializer进行初始化,也称为Xavier uniform initializer,其实现位于:{{3} }