我在我的网络中使用LSTMCell单元,我无法弄清楚这个单元的权重是如何初始化的。如何在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
一个实例,它似乎终于调用get_variable
的方法。该docstring为get_variable
内容如下:
如果初始化是
None
(默认值),则默认初始值传递的可变范围 将被使用。如果那个也是None
,则会使用glorot_uniform_initializer
。初始化器也可以是一个张量器,在这种情况下,变量初始化为该值并且形状为 。
是否正确:除非没有指定初始化程序,否则LSTMCell将被初始化为glorot_uniform_initializer
?