Один из способов, который не требует AllocDiag()()
, - это использовать theano.tensor.set_subtensor()
с A[range(n),range(n)]
для получения диагональных индексов, где A
- матрица n*n
. Примерно так:
A = tt.set_subtensor(A0[range(n),range(n)], x)
A = tt.set_subtensor(A[range(n-1),range(1,n)], x[:-1])
A = tt.set_subtensor(A[range(1,n),range(n-1), x[1:])
, где A0
- исходная матрица, например, матрица нулей.