我对如何为LSTM定义权重矩阵感到困惑。由于LSTM有8个权重矩阵,我不知道如何在张量流中初始化LSTM的权重矩阵。
但后来我遇到了这个implementation,这是完全合理的,因为它具有所有8个权重矩阵,但它不使用LSTM的张量流实现。它与LSTM方程一致。但是在LSTM的张量流implementation中,我不知道如何定义所有这8个权重矩阵,因为它们是在上面的第一个实现中定义的。
你能帮帮我吗?
答案 0 :(得分:0)
首先要做的事情:如果仔细观察一下,就不会有8个矩阵,而是总共14个矩阵。 Input Gate, Forget Gate, Cell State and Output State
的4 * 3矩阵W,U(参数矩阵)和b(偏差矢量)。此外,dense layer
还有两个矩阵W和b。
现在提出实际问题,我想你想知道这些矩阵是如何在Tensorflow中初始化的。
我正在回答Tensorflow v1.2的问题。
快速回答:使用TF-api for LSTM,其中有一个名为initializer
的参数用于初始化权重和投影矩阵。
默认情况下,偏向量初始化为零向量和内核 初始化器使用均匀分布随机初始化。
现在来看看W和b的使用位置,你需要在代码中深入挖掘。我将提供相同的几个检查站。
lstm_matrix = _linear([inputs, m_prev], 4 * self._num_units, bias=True)
weights = vs.get_variable(
_WEIGHTS_VARIABLE_NAME, [total_arg_size, output_size],
dtype=dtype,
initializer=kernel_initializer)
下面。而不是4次单独的乘法,执行单次乘法,然后将矩阵分成4部分。
因此,简而言之,Tensorflow会自动为您执行初始化。 如果您不想使用默认初始值设定项,则可以使用 灵活地提供其他选择。