2024-09-26 22:52:54 发布
网友
我不知道如何定义LSTM的权重矩阵。由于LSTM有8个权重矩阵,我不知道如何在tensorflow中初始化LSTM的权重矩阵。在
但后来我遇到了这个implementation,这是完全有意义的,因为它有所有8个权重矩阵,但它没有使用LSTM的tensorflow实现。这与LSTM方程一致。但是在LSTM的tensorflowimplementation中,我不知道如何定义所有8个权重矩阵,因为它们是在上面第一个实现中定义的。在
你能帮帮我吗?在
第一件事是:如果你仔细观察一下,不完全是8个矩阵,而是总共14个矩阵。对于Input Gate, Forget Gate, Cell State and Output State的W,U(参数矩阵)和b(偏差向量)的4*3矩阵。此外,dense layer还有两个矩阵W和b。在
Input Gate, Forget Gate, Cell State and Output State
dense layer
现在来讨论实际的问题,我假设您想知道这些矩阵是如何在Tensorflow中初始化的。在
我正在回答有关Tensorflow v1.2的问题。
快速回答:使用TF-api for LSTM,它有一个名为initializer的参数,用于初始化权重和投影矩阵。在
initializer
By default, bias vector is initialized to zero vector and kernel initializers are initialized randomly using uniform distribution.
现在来看看W和b在哪里使用,您需要深入挖掘代码内部。我会提供一些相同的检查点。在
方法调用来计算乘法:https://github.com/tensorflow/tensorflow/blob/3686ef0d51047d2806df3e2ff6c1aac727456c1d/tensorflow/python/ops/rnn_cell_impl.py#L576
lstm_matrix = _linear([inputs, m_prev], 4 * self._num_units, bias=True)
实际计算:https://github.com/tensorflow/tensorflow/blob/3686ef0d51047d2806df3e2ff6c1aac727456c1d/tensorflow/python/ops/rnn_cell_impl.py#L1051
weights = vs.get_variable( _WEIGHTS_VARIABLE_NAME, [total_arg_size, output_size], dtype=dtype, initializer=kernel_initializer)
这里。然后将乘法分解成4个单独的部分。
So, in nutshell, Tensorflow does initialization automatically for you. In case if you don't want to go with default initializers, you have flexibility to provide other options.
第一件事是:如果你仔细观察一下,不完全是8个矩阵,而是总共14个矩阵。对于
Input Gate, Forget Gate, Cell State and Output State
的W,U(参数矩阵)和b(偏差向量)的4*3矩阵。此外,dense layer
还有两个矩阵W和b。在现在来讨论实际的问题,我假设您想知道这些矩阵是如何在Tensorflow中初始化的。在
我正在回答有关Tensorflow v1.2的问题。
快速回答:使用TF-api for LSTM,它有一个名为
initializer
的参数,用于初始化权重和投影矩阵。在现在来看看W和b在哪里使用,您需要深入挖掘代码内部。我会提供一些相同的检查点。在
方法调用来计算乘法:https://github.com/tensorflow/tensorflow/blob/3686ef0d51047d2806df3e2ff6c1aac727456c1d/tensorflow/python/ops/rnn_cell_impl.py#L576
lstm_matrix = _linear([inputs, m_prev], 4 * self._num_units, bias=True)
实际计算:https://github.com/tensorflow/tensorflow/blob/3686ef0d51047d2806df3e2ff6c1aac727456c1d/tensorflow/python/ops/rnn_cell_impl.py#L1051
weights = vs.get_variable( _WEIGHTS_VARIABLE_NAME, [total_arg_size, output_size], dtype=dtype, initializer=kernel_initializer)
这里。然后将乘法分解成4个单独的部分。
相关问题 更多 >
编程相关推荐