我已经苦苦挣扎了很长一段时间。我想要的只是一个torch.diff()函数。然而,许多矩阵操作似乎不容易与张量操作兼容。
我尝试了大量各种pytorch操作组合,但它们都没有起作用。
由于pytorch没有实现这个基本功能,我开始尝试沿着特定轴从元素i中减去元素i+1。
然而,由于张量的限制,你不能简单地对每个元素进行这样的操作,因此我尝试构造另一个张量,其中的元素沿着一个轴移动:
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函数。
所以我仍然困在了这个简单的问题上,即如何在一个PyTorch张量上获取梯度。
我所有的搜索都指向了PyTorch的神奇功能“autograd”,但这与这个问题无关。