gpt4 book ai didi

python - pytorch 梯度/导数/沿轴的差异,如 numpy.diff

转载 作者:太空宇宙 更新时间:2023-11-04 08:31:52 36 4
gpt4 key购买 nike

我已经为此苦苦挣扎了很长一段时间。我想要的只是一个 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]

但现在我们有一个不同的问题 - 索引并不像它宣传的那样真的模仿 pytorch 中的 numpy,所以你不能用这样的“类列表”张量进行索引。我还尝试使用张量 scatter 函数

所以我仍然坚持尝试在 pytoch 张量上获得梯度这个简单的问题。

我所有的搜索都导致了 pytorchs 的“autograd”功能的惊人功能——这与这个问题无关。

最佳答案

具有固定过滤器的一维卷积应该可以解决问题:

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

然后像使用 torch.nn 中的任何其他层一样使用 filter

此外,您可能希望更改 padding 以满足您的特定需求。

关于python - pytorch 梯度/导数/沿轴的差异,如 numpy.diff,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52306279/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com