已解决
【pytorch】torch.gather()函数
来自网友在路上 161861提问 提问时间:2023-10-31 19:55:49阅读次数: 61
最佳答案 问答题库618位专家为你答疑解惑
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)]
]
查看全文
99%的人还看了
相似问题
猜你感兴趣
版权申明
本文"【pytorch】torch.gather()函数":http://eshow365.cn/6-28947-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!