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])   
相关推荐
asdzx67几秒前
告别手动校对:使用 Python 对比两个 PDF 文档的差异
开发语言·python·pdf
qq_460978404 分钟前
如何在 PHP 包含文件中动态排除当前页面的导航项
jvm·数据库·python
编码者卢布5 分钟前
【App Service】查看Application Insights自身SDK日志的方法示例
后端·python·flask
一朵缥缈的向日葵.5 分钟前
[特殊字符] Mojo 语言:为 AI 硬件而生的“Python 升级版” —— 完整指南
人工智能·python·mojo
wolfengi5 分钟前
python之使用docxtpl渲染word模板
数据库·python·word
2401_831419446 分钟前
Layui如何实现表格内部的图片点击后进入相册轮播模式
jvm·数据库·python
Jetev9 分钟前
SQL使用JOIN连接更新目标表数据_UPDATE语句结合JOIN语法实现
jvm·数据库·python
2401_8323655214 分钟前
如何用最快速度完成Navicat的Linux系统完美安装配置_傻瓜式操作步骤
jvm·数据库·python
财经资讯数据_灵砚智能14 分钟前
基于全球经济类多源新闻的NLP情感分析与数据可视化(日间)2026年4月29日
大数据·人工智能·python·信息可视化·自然语言处理
SilentSamsara18 分钟前
Python 内存管理:引用计数、循环垃圾回收与内存泄漏排查
开发语言·vscode·python·青少年编程·pycharm