В этом случае tempTens[20,:] = SomeMatrix * A[20,:]
- это операция на месте относительно tempTens
, которая, как правило, не гарантирует работу с автоградой.Однако, если вы создадите новую переменную, применив такую операцию, как конкатенация
output = torch.cat([SomeMatrix * A[20, :], torch.zeros(163, 3, device='cuda')], dim=0)
, вы получите тот же результат с точки зрения математики (матрица с первыми 20 строками из SomeMatrix * A[20, :]
и следующие 166 строк 0), но это будет правильно работать с autograd.Вообще говоря, это правильный подход к решению подобных проблем.