我已經為此苦苦掙扎了一段時間。我想要的只是一個 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]但是現在我們遇到了一個不同的問題 - 索引并不能真正在 pytorch 中模仿 numpy 廣告,所以你不能用這樣的“類似列表”的張量來索引。我也嘗試使用張量scatter函數所以我仍然被這個試圖在 pytoch 張量上獲得梯度的簡單問題所困擾。我所有的搜索都導致了 pytorchs 的“autograd”功能的奇妙功能——這與這個問題無關。
2 回答

BIG陽
TA貢獻1859條經驗 獲得超6個贊
帶有固定過濾器的一維卷積應該可以解決問題:
filter = torch.nn.Conv1d(in_channels=1, out_channels=1, kernel_size=2, stride=1, padding=1, groups=1, bias=False)
kernel = np.array([-1.0, 1.0])
kernel = torch.from_numpy(kernel).view(1,1,2)
filter.weight.data = kernel
filter.weight.requires_grad = False
然后filter像使用torch.nn.
此外,您可能想要更改padding以滿足您的特定需求。
添加回答
舉報
0/150
提交
取消