Связывание всех значений по диагонали матрицы в PyTorch - PullRequest
0 голосов
/ 01 февраля 2019

Модель, которую я реализую, имеет набор параметров a1, ..., aH, которые соответствуют взвешиванию предыдущих результатов.Это реализуется посредством умножения матрицы, которая выглядит следующим образом:

a1  0  0  0  0 ...
a2 a1  0  0  0 ...
a3 a2 a1  0  0 ...
 :  :  :  :  :

В текущей реализации а сохраняются в одномерном nn.parameter.Parameter с H записями, из которых матрица строится во время каждой пересылки.проходить.Градиент матрицы автоматически распространяется на параметры через autograd.

Однако для этого необходимо заново строить матрицу при каждом следующем проходе.Можно ли сделать так, чтобы сама матрица была параметром, но связать веса вдоль основной диагонали и нижней диагонали так, чтобы это было эквивалентно построению ее из вектора параметров?

1 Ответ

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

Вы можете использовать dia_matrix из scipy

from scipy.sparse import dia_matrix

a = [1,2,3]
b = [4,5]

m = dia_matrix([a, b], [0, -1])
print(m)
#   (0, 0)  [1, 2, 3]
#   (0, 1)  [4, 5]
a[0] = 10

print(m)
#   (0, 0)  [10, 2, 3]
#   (0, 1)  [4, 5]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...