Является ли умножение каскадных матриц более быстрым, чем множественные несцепленные матемулы?Если так, то почему? - PullRequest
0 голосов
/ 21 февраля 2019

Определение ячейки LSTM включает 4 умножения матрицы с входом и 4 умножения матрицы с выходом.Мы можем упростить выражение, используя умножение одной матрицы, объединяя 4 маленькие матрицы (теперь матрица в 4 раза больше).

Мой вопрос: повышает ли это эффективность умножения матриц?Если так, то почему?Потому что мы можем поместить их в постоянную память?Или это из-за краткости кода?

Количество умножаемых элементов не изменяется независимо от того, сцепляем ли мы матрицы.(Следовательно, сложность не должна меняться.) Поэтому мне интересно, почему мы это сделаем ..

Вот выдержка из документа pytorch torch.nn.LSTM(*args, **kwargs).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)

1 Ответ

0 голосов
/ 21 февраля 2019

Структура LSTM направлена ​​не на повышение эффективности умножения, а в большей степени для обхода убывающих / взрывных градиентов (https://stats.stackexchange.com/questions/185639/how-does-lstm-prevent-the-vanishing-gradient-problem).. Есть некоторые исследования, проводимые для смягчения последствий уменьшающихся градиентов и ячеек GRU / LSTM +глазки - несколько попыток смягчить это.

...