【pytorch】torch.gather()函数

dim=0时

python 复制代码
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)] ]
python 复制代码
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)
python 复制代码
tensor([[9, 10, 11, 12],
        [5, 6, 7, 8],
        [1, 2, 3, 4],
        [1, 6, 11, 4]])
python 复制代码
#### 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时

python 复制代码
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)
python 复制代码
tensor([[3, 3, 3, 3],
        [6, 6, 6, 6],
        [9, 10, 11, 9]])
python 复制代码
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)]
]
相关推荐
大象AI共学几秒前
# 【AI成本治理】额度缩水 44%-76% 之后的自查清单:10 题体检表 + 三档模型组合 + 免费/本地化实测方案
人工智能
OceanBase数据库官方博客1 分钟前
亮相“十五五”公积金高质量发展大会“AI 数据库”助力智慧公积金升级
数据库·人工智能
用户8356290780516 分钟前
使用 Python 在 Excel 中插入 OLE 对象
后端·python
学习星球6 分钟前
2026 AI游戏开发实战指南:从NVIDIA ACE到Summer Engine,AI如何重塑游戏开发
人工智能·microsoft
稚语成长11 分钟前
适趣大历史是什么?儿童历史启蒙 AI App 解析(H1–H7 分级、适合几岁、怎么用)
人工智能
one31215 分钟前
高精度MEMS电容式倾角传感器:原理、结构与Python三维可视化
开发语言·python
dongd70320 分钟前
2026年大语言模型AI网关行业调查报告已出刊:产业链、占有率、发展前景,一次讲透
大数据·人工智能·语言模型
一RTOS一22 分钟前
2026世界机器人大会:鸿道为具身智能机器人打造“神经系统”
人工智能·机器人·鸿道操作系统·鸿道实时操作系统·国产嵌入式操作系统选型·智算控一体
auto_go29 分钟前
大模型实战指南(10)——多模态实战:让模型“看懂”图片和视频
大数据·人工智能·音视频
Sunlly30 分钟前
让 Agent 长期跑下去:OpenClaw 的可靠性架构
人工智能