Lin*_*Guo 3 python neural-network lstm recurrent-neural-network
我想在 LSTM 中编码一个时间步。我的重点是理解遗忘门层、输入门层、候选值、现在和未来的 细胞状态的功能。
让我们假设我在 t-1 和 xt 的隐藏状态如下。为简单起见,我们假设权重矩阵是单位矩阵,并且所有偏差都为零。
htminus1 = np.array( [0, 0.5, 0.1, 0.2, 0.6] )
xt = np.array( [-0.1, 0.3, 0.1, -0.25, 0.1] )
Run Code Online (Sandbox Code Playgroud)
我知道忘记状态是 sigmoidhtminus1和xt
那么,是吗?
ft = 1 / ( 1 + np.exp( -( htminus1 + xt ) ) )
>> ft = array([0.47502081, 0.68997448, 0.549834 , 0.4875026 , 0.66818777])
Run Code Online (Sandbox Code Playgroud)
我指的是这个链接来实现一个块 LSTM 的一次迭代。链接说ft应该是 0 或 1。我在这里遗漏了什么吗?
如何根据下面提到的图片中给出的模式获得遗忘门层?一个例子对我来说是说明性的。
同样,如何获得输入门层it和新候选值的向量,\tilde{C}_t如下图所示?
最后,如何ht按照下图给出的方案获得新的隐藏状态?
一个简单的例子将有助于我理解。提前致谢。
所以这从数字上看并不明显,但它是如何工作的 -
如果您看到两条线连接形成一条线,则这是一个串联操作。您已将其解释为添加。
无论您在哪里看到sigmoid或tanh阻止,都暗示了与可训练权重矩阵的乘法。
如果两行通过显式x或 连接+,则分别进行元素乘法和加法。
因此sigmoid(htminus1+xt),您所拥有的不是,而是正确的操作是sigmoid(Wf * np.concatenate(htminus1+xt)) + bf。Wf是可训练参数的矩阵,bf是相应的偏差项。
请注意,我刚刚在图像右侧用 numpy 编写了方程式,其他内容不多。解释[a, b]为a和之间的连接操作b。
您可以类似地定义其他操作。
ft = sigmoid(Wf * np.concatenate(htminus1, xt)) + bf
it = sigmoid(Wi * np.concatenate(htminus1, xt)) + bi
Ctt = tanh(Wc * np.concatenate(htminus1, xt)) + bc
Ot = sigmoid(Wo * np.concatenate(htminus1, xt)) + bo
Ct = (C_{t-1} * ft) + (Ctt * it)
ht = Ot * tanh(Ct)
Run Code Online (Sandbox Code Playgroud)
注意:我表示C^{tilda}为Ctt
| 归档时间: |
|
| 查看次数: |
92 次 |
| 最近记录: |