在 https://keras.io/layers/recurrent/我看到 LSTM 层有一个 kernel
和一个 recurrent_kernel
.它们的含义是什么?根据我的理解,我们需要 LSTM 单元的 4 个门的权重。但是,在 keras 实现中,kernel
具有 (input_dim, 4*units) 和 recurrent_kernel
的形状具有(单位,4*单位)的形状。那么,他们都以某种方式实现了门吗?
最佳答案
如果我错了,请纠正我,但如果你看看 LSTM 方程:
你有 4 W 转换输入和 4 的矩阵U 变换隐藏状态的矩阵。
Keras 将这些 4 个矩阵的集合保存到 kernel
中和 recurrent_kernel
权重数组。来自 the code that uses them :
self.kernel_i = self.kernel[:, :self.units]
self.kernel_f = self.kernel[:, self.units: self.units * 2]
self.kernel_c = self.kernel[:, self.units * 2: self.units * 3]
self.kernel_o = self.kernel[:, self.units * 3:]
self.recurrent_kernel_i = self.recurrent_kernel[:, :self.units]
self.recurrent_kernel_f = self.recurrent_kernel[:, self.units: self.units * 2]
self.recurrent_kernel_c = self.recurrent_kernel[:, self.units * 2: self.units * 3]
self.recurrent_kernel_o = self.recurrent_kernel[:, self.units * 3:]
显然,这 4 个矩阵存储在沿第二维连接的权重数组中,这解释了权重数组的形状。
关于keras - keras lstm层中的多个内核是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55723284/