这是 this question 的后续问题。我想在 pytorch 中做同样的事情。是否有可能做到这一点?如果是,如何?
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="section">
<div class="container">
<p>
This is the section 1 content
</p>
<div class="extraClick">
Click Me
</div>
</div>
<div class="extra">
This is some extra content
</div>
</div>
<div class="section">
<div class="container">
<p>
This is the section 2 content
</p>
<div class="extraClick">
Click Me
</div>
</div>
<div class="extra">
This is some extra content
</div>
</div>
<div class="section">
<div class="container">
<p>
This is the section 3 content
</p>
<div class="extraClick">
Click Me
</div>
</div>
<div class="extra">
This is some extra content
</div>
</div>
我需要像 import torch
image = torch.tensor([[246, 50, 101], [116, 1, 113], [187, 110, 64]])
iy = torch.tensor([[1, 0, 2], [1, 0, 2], [2, 2, 2]])
ix = torch.tensor([[0, 2, 1], [1, 2, 0], [0, 1, 2]])
warped_image = torch.zeros(size=image.shape)
这样的东西来提供输出
torch.add.at(warped_image, (iy, ix), image)
请注意,[[ 0. 0. 51.]
[246. 116. 0.]
[300. 211. 64.]]
和 (0,1)
处的索引指向相同的位置 (1,1)
。所以,我想要(0,2)
。
答案 0 :(得分:3)
您要查找的是 torch.Tensor.index_put_
,其中 accumulate
参数设置为 True
:
>>> warped_image = torch.zeros_like(image)
>>> warped_image.index_put_((iy, ix), image, accumulate=True)
tensor([[ 0, 0, 51],
[246, 116, 0],
[300, 211, 64]])
或者,使用外置版本 torch.index_put
:
>>> torch.index_put(torch.zeros_like(image), (iy, ix), image, accumulate=True)
tensor([[ 0, 0, 51],
[246, 116, 0],
[300, 211, 64]])