keras lstm层中的多个内核是什么意思?

时间:2019-04-17 08:35:44

标签: keras neural-network lstm

https://keras.io/layers/recurrent/上,我看到LSTM层具有kernelrecurrent_kernel。它们是什么意思?以我的理解,我们需要一个LSTM单元的4个门的权重。但是,在keras实现中,kernel的形状为(input_dim,4 * units),recurrent_kernel的形状为(units,4 * units)。那么,他们两个都以某种方式实现了大门吗?

1 个答案:

答案 0 :(得分:2)

如果我错了,请纠正我,但是如果您看一下LSTM方程式:

enter image description here

您有4个转换输入的 W 矩阵和4个转换隐藏状态的 U 矩阵。

Keras将这4组矩阵保存到kernelrecurrent_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:]

显然,这四个矩阵存储在沿第二维连接的权重数组中,这解释了权重数组的形状。