在tensorflow中,在我使用cell.zero_state()来初始化单元状态和隐藏状态之后,我应该初始化全局变量,否则RNN单元将不会运行。
但是,我想知道它是如何全球化的(初始化变量范围?)以及它变换全局化的变量(偏差?重量?激活函数?)?
我认为应该初始化的参数不是:每个神经元中的重量,偏差,激活函数。
global_variables_initializer实际上做了什么?
非常感谢!
答案 0 :(得分:0)
无论何时在TensorFlow中create a variable,框架都会负责将此变量添加到已创建变量的集合中。想象一下带有变量指针的列表。
此类变量的默认集合称为GraphKeys.GLOBAL_VARIABLES
。
函数tf.global_variables_initializer
只是retrieves来自集合的所有变量和initializes它们。
zero_state
并非直接创建变量。它只是将匹配形状的全零和#34-赋予单元变量。
初始变量值的范围取决于变量初始值。
总结:每个权重,偏差,隐藏状态变量都收集在一个特殊的创建变量列表中,TensorFlow只是初始化每个变量,类似于伪代码:
foreach v in GraphKeys.GLOBAL_VARIABLES:
assign v.value = v.call_initializer()