Я уже давно борюсь с этим.Все, что я хочу, это функция torch.diff ().Однако многие матричные операции не кажутся легко совместимыми с тензорными операциями.
Я пробовал огромное количество различных комбинаций операций Pytorch, но ни одна из них не работает.
Из-за того, что Pytorch не реализовал эту базовую функцию, я начал с простой попыткивычтите элемент i+1
из элемента i
вдоль определенной оси.
Однако вы не можете просто сделать это поэлементно (из-за ограничений тензора), поэтому я попытался построить другой тензор,с элементами, смещенными вдоль одной оси:
ix_plus_one = [0]+list(range(0,prediction.size(1)-1))
ix_differential_tensor = torch.LongTensor(ix_plus_one)
diff_one_tensor = prediction[:,ix_differential_tensor]
Но теперь у нас другая проблема - индексирование не на самом деле работает, чтобы имитировать NumPy в Pytorch, как он рекламирует, так что вы можете 'Индекс с «списочным» тензорным вот так.Я также пытался использовать тензорные scatter
функции
Так что я все еще сталкиваюсь с этой простой проблемой - попытаться получить градиент на тензор Пиоч.
Все мои поиски приводят кПотрясающие возможности функции autograd у pytorchs, которая не имеет ничего общего с этой проблемой.