深度学习pytorch——拼接与拆分(持续更新)

cat拼接

使用条件:合并的dim的size可以不同,但是其它的dim的size必须相同。

语法:cat(tensor1,tensor2,dim = n) # 将tensor1和tensor2的第n个维度合并

代码演示:

python 复制代码
# 拼接与拆分
a = torch.rand(4,32,8)
b = torch.rand(5,32,8)
print(torch.cat([a,b],dim=0).shape)     # torch.Size([9, 32, 8])

stack拼接

为什么要使用stack?下面会举个例子阐述一下原因:

A 32, 8 # 一个班,一共有32个同学,每个同学有8门成绩

B 32, 8 # 一个班,一共有32个同学,每个同学有8门成绩

cat:64, 8 # 一个班,一共有64个同学,每个同学有8门成绩,不符合实际

stack: 2, 32, 8 # 2个班,每个班有32个同学,每个同学有8门成绩,符合实际

使用条件:A.shape = B.shape

代码演示:

python 复制代码
a = torch.rand(32,8)
b = torch.rand(32,8)
print(torch.cat([a,b],dim=0).shape)     # torch.Size([64, 8])
print(torch.stack([a,b],dim=0).shape)   # torch.Size([2, 32, 8])

split------根据长度拆分

语法:split(len, dim = n) # 在第n个维度拆分,每个size=len

代码演示:

python 复制代码
# c.shape = torch.Size([2, 32, 8])
aa, bb = c.split(1,dim=0)
print(aa.shape,bb.shape)                # torch.Size([1, 32, 8]) torch.Size([1, 32, 8])

注意:不要超过第0维的总体长度2,等于也不行,别忘了split进行的是拆分。

chunk------根据数量拆分

语法:chunk(num, dim = n) # 在第n维进行拆分,拆分为num份

代码演示:

python 复制代码
# c.shape = torch.Size([2, 32, 8])
aa, bb = c.chunk(2,dim = 0)
print(aa.shape,bb.shape)                # torch.Size([1, 32, 8]) torch.Size([1, 32, 8])
相关推荐
IT_陈寒3 分钟前
Python的多线程居然是个假把式?搞清GIL让我少熬三天夜
前端·人工智能·后端
熊野君15 分钟前
第 7 章 AI时代产品经理新增能力
大数据·人工智能·经验分享·职场和发展·产品经理
AcaDesign19 分钟前
省部级协会科学技术奖答辩ppt视频制作_科技进步奖_技术发明奖_自然科学奖PPT模板
人工智能
思考着亮32 分钟前
7.限流、安全防护、缓存分流与模型容灾
人工智能
nbsaas-boot44 分钟前
多智能体系统的架构边界:任务编排、共享状态与故障隔离设计
人工智能·算法·动态规划
嘿嘿-661 小时前
GPT-6 Astra 新手快速上手指南
人工智能·gpt·ai·chatgpt·ai编程
大熊背1 小时前
基于 CFA 阵列特征的自适应去马赛克算法(二)
图像处理·人工智能·计算机视觉·插值·去马赛克
oort1231 小时前
OortCloud Token Plan
大数据·人工智能·开源
flyinsono1 小时前
宠物医疗数字化升级,选对工具少走弯路
人工智能·宠物
VivienneLuo1 小时前
3. 联邦图学习-《Federated Graph Neural Networks: Overview, Techniques and Challenges》
人工智能·gnn·联邦学习