我在我的網絡中使用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
?