连续矩阵乘法比多个非连续matmul快吗?如果是这样,为什么?

问题描述 投票:1回答:1

LSTM单元的定义涉及4个输入的矩阵乘法,以及4个输出的矩阵乘法。我们可以通过连接4个小矩阵使用单个矩阵乘法来简化表达式(现在矩阵是4倍大)。

我的问题是:这是否提高了矩阵乘法的效率?如果是这样,为什么?因为我们可以把它们放在连续记忆中吗?或者是因为代码的简洁性?

无论我们是否连接矩阵,我们乘以的项目数都不会改变。 (因此复杂性不应该改变。)所以我想知道为什么我们会这样做..

以下是torch.nn.LSTM(*args, **kwargs)的pytorch doc的摘录。 W_ii, W_if, W_ig, W_io连接在一起。

weight_ih_l[k] – the learnable input-hidden weights of the \text{k}^{th}k 
th
  layer (W_ii|W_if|W_ig|W_io), of shape (4*hidden_size x input_size)

weight_hh_l[k] – the learnable hidden-hidden weights of the \text{k}^{th}k 
th
  layer (W_hi|W_hf|W_hg|W_ho), of shape (4*hidden_size x hidden_size)

bias_ih_l[k] – the learnable input-hidden bias of the \text{k}^{th}k 
th
  layer (b_ii|b_if|b_ig|b_io), of shape (4*hidden_size)

bias_hh_l[k] – the learnable hidden-hidden bias of the \text{k}^{th}k 
th
  layer (b_hi|b_hf|b_hg|b_ho), of shape (4*hidden_size)
tensorflow matrix lstm pytorch gpu-programming
1个回答
0
投票

LSTM的结构不是为了提高乘法效率,而是为了绕过衰减/爆炸梯度(https://stats.stackexchange.com/questions/185639/how-does-lstm-prevent-the-vanishing-gradient-problem)。有一些研究正在进行以减轻梯度减小的影响,而GRU / LSTM细胞+窥视孔很少有人试图减轻这种影响。

© www.soinside.com 2019 - 2024. All rights reserved.