亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

pytorch 梯度/導數/沿軸的差異,如 numpy.diff

pytorch 梯度/導數/沿軸的差異,如 numpy.diff

慕哥9229398 2021-06-12 19:01:47
我已經為此苦苦掙扎了一段時間。我想要的只是一個 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以滿足您的特定需求。


查看完整回答
反對 回復 2021-06-16
  • 2 回答
  • 0 關注
  • 434 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號