dim=0时
index=[ [x1,x2,x2],
[y1,y2,y2],
[z1,z2,z3] ]
如果dim=0
填入方式为:
index=[ [(x1,0),(x2,1),(x3,2)]
[(y1,0),(y2,1),(y3,2)]
[(z1,0),(z2,1),(z3,2)] ]
input = [
[1, 2, 3, 4],
[5, 6, 7, 8],
[9, 10, 11, 12]
] # shape(3,4)
input = torch.tensor(input)
length = torch.LongTensor([
[2,2,2,2],
[1,1,1,1],
[0,0,0,0],
[0,1,2,0]
])# shape(4,4)
out = torch.gather(input, dim=0, index=length)
print(out)
tensor([[9, 10, 11, 12],
[5, 6, 7, 8],
[1, 2, 3, 4],
[1, 6, 11, 4]])
#### dim=0后,根据new_index对input进行索引
new_index=[ [(2,0),(2,1),(2,2),(2,3)],
[(1,0),(1,1),(1,2),(1,3)],
[(0,0),(0,1),(0,2),(0,3)],
[(0,0),(1,1),(2,2),(0,3)] ]
可以观察到第四行,行索引变为0,所以当gather函数里的index超过input的唯独时,会从0重新计数。
dim=1时
input = [
[1, 2, 3, 4],
[5, 6, 7, 8],
[9, 10, 11, 12]
] # shape(3,4)
input = torch.tensor(input)
length = torch.LongTensor([
[2,2,2,2],
[1,1,1,1],
[0,1,2,0]
]) # shape(3,4)
out = torch.gather(input, dim=1, index=length)
print(out)
tensor([[3, 3, 3, 3],
[6, 6, 6, 6],
[9, 10, 11, 9]])
new_index = [
[(0,2),(0,2),(0,2),(0,2)],
[(1,1),(1,1),(1,1),(1,1)],
[(2,0),(2,1),(2,2)(2,0)]
]
文章来源地址https://www.toymoban.com/news/detail-735516.html
文章来源:https://www.toymoban.com/news/detail-735516.html
到了这里,关于【pytorch】torch.gather()函数的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!