tensor向量按任意维度进行切片、拆分、组合

torch.index_select(input_tensor, 切片维度, 切片索引)

注意:切完之后,转onnx时会生成Gather节点;

torch自带切片操作

start : end : step:

范围前闭后开,将其放在哪个维度上,就对那个维度起作用

torch.cat((a, b) , dim)

已有的轴上拼接 矩阵,默认轴为0,给定轴的维度可以不同,其余轴的维度必须相同

三个操作的组合使用例子如下:

python 复制代码
import torch

x = torch.randn(1, 18, 4, 4)

# print("x:",x)
print("x.shape:",x.shape)

indices_cls = torch.tensor([2, 5, 8, 11, 14, 17])
indices_point = torch.tensor([0,1, 3,4, 6,7, 9,10, 12,13, 15,16])

kpt_point = torch.index_select(x, 1, indices_point)
kpt_cls = torch.index_select(x, 1, indices_cls)

print("kpt_point.shape:",kpt_point.shape)
print("kpt_cls.shape:",kpt_cls.shape)


x_2 = torch.cat([kpt_point[:,0:2:1,],kpt_cls[:,0:1:1,],kpt_point[:,2:4:1,],kpt_cls[:,1:2:1,],kpt_point[:,4:6:1,],kpt_cls[:,2:3:1,],
            kpt_point[:,6:8:1,],kpt_cls[:,3:4:1,],kpt_point[:,8:10:1,],kpt_cls[:,4:5:1,],kpt_point[:,10:12:1,],kpt_cls[:,5:6:1,]],1)

# print("x_2:",x_2)
print("x_2.shape:",x_2.shape)

打印组合前后tensor的输出形状和内容发现,前后一致:

python 复制代码
x.shape: torch.Size([1, 18, 4, 4])
kpt_point.shape: torch.Size([1, 12, 4, 4])
kpt_cls.shape: torch.Size([1, 6, 4, 4])   
x_2.shape: torch.Size([1, 18, 4, 4])   
相关推荐
电商API_180079052478 分钟前
API 接口:程序世界的通用语言与交互基因
爬虫·python·数据挖掘·网络爬虫
AI浩25 分钟前
DINO-R1:激励推理能力的视觉基础模型
python·目标检测·计算机视觉
失败又激情的man25 分钟前
python爬虫关于多进程,多线程,协程的使用
开发语言·爬虫·python
橘子编程1 小时前
Python-循环结构解析
开发语言·python
拓端研究室TRL2 小时前
Python古代文物成分分析与鉴别研究:灰色关联度、岭回归、K-means聚类、决策树分析
python·决策树·回归·kmeans·聚类
Phoebe丶2 小时前
基于Pyecharts的电影数据集可视化分析实战
python·信息可视化·数据分析
AI妈妈手把手3 小时前
Kernel K-means:让K-means在非线性空间“大显身手”
人工智能·python·机器学习·kmeans·聚类算法
李强57627823 小时前
语法制导的语义计算(包含python源码)
java·数据库·python
挨踢诗人3 小时前
Python实现企业微信Token自动获取到SQLite存储
python·sqlite·企业微信·数据集成
wx_ywyy67984 小时前
“微信短剧小程序开发指南:从架构设计到上线“
java·python·短剧·短剧系统·海外短剧·推客小程序·短剧系统开发