【问题标题】:What is the meaning of multiple kernels in keras lstm layer?keras lstm层中的多个内核是什么意思?
【发布时间】:2019-09-07 10:45:56
【问题描述】:

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

【问题讨论】:

    标签: keras neural-network lstm


    【解决方案1】:

    如果我错了,请纠正我,但如果你看看 LSTM 方程:

    您有 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:]
    

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

    【讨论】:

    • 嗯,很有趣。那里似乎有两种不同版本的 LSTM。我指的是colah.github.io/posts/2015-08-Understanding-LSTMs它们连接输入和隐藏状态,因此只有4个权重矩阵
    • 我猜 Keras 希望允许您为两个矩阵指定单独的正则化器和约束。然后将权重分成单独的矩阵是有意义的。
    猜你喜欢
    • 2015-05-16
    • 1970-01-01
    • 1970-01-01
    • 2012-03-29
    • 1970-01-01
    • 1970-01-01
    • 2019-05-25
    • 2019-02-27
    相关资源
    最近更新 更多