Keras LSTM 中的内核和循环内核

Cae*_*eta 6 python machine-learning lstm keras

我试图在脑海中画出 LSTM 的结构,但我不明白什么是内核和循环内核。根据 LSTM 部分的这篇文章,内核是与输入相乘的四个矩阵,循环内核是与隐藏状态相乘的四个矩阵,但是,该图中的这 4 个矩阵是什么?

在此输入图像描述

是城门吗?

我正在使用这个应用程序测试以下代码的变量如何unit影响内核、循环内核和偏差:

model = Sequential()
model.add(LSTM(unit = 1, input_shape=(1, look_back)))
Run Code Online (Sandbox Code Playgroud)

它让look_back = 1我回想起:

在此输入图像描述

unit = 2它返回我这个

在此输入图像描述

有了unit = 3这个

在此输入图像描述

用这个值进行测试我可以推断出这个表达式

在此输入图像描述

但我不知道这在内部是如何运作的。<1x(4u)>或是什么意思<ux(4u)>u = units

Nik*_*ido 3

内核基本上是 LSTM 单元处理的权重

单位=神经元,就像经典的多层感知器一样

它没有在你的图表中显示,但输入是一个具有 1 个或多个值的向量 X,并且每个值都在具有自己的权重 w 的神经元中发送(我们将通过反向传播来学习)

这四个矩阵如下(表示为 Wf、Wi、Wc、Wo):

重量

当你添加一个神经元时,你正在添加其他 4 个权重\内核

因此,对于输入向量 X,您有四个矩阵。因此

1 * 4 * units = kernel
Run Code Online (Sandbox Code Playgroud)

关于recurrent_kernel 这里你可以找到答案。基本上,在 keras 中,输入和隐藏状态并不像示例图中那样连接(W[ht-1, t]),而是使用其他四个名为U的矩阵进行拆分和处理:

keras 如何处理输入 x 和隐藏状态 ht-1

因为您有一个隐藏状态 x 神经元,所以权重 U(所有四个 U)为:

units * (4 * units) = recurrent kernel
Run Code Online (Sandbox Code Playgroud)

ht-1 以循环方式来自所有神经元。就像在多层感知器中一样,神经元的每个输出都会进入所有下一个循环层神经元

来源:http ://colah.github.io/posts/2015-08-Understanding-LSTMs/