ternsor合并与分割

本文介绍了在PyTorch中使用`torch.cat`、`torch.stack`和`torch.chunk`进行张量拼接、增加新维度和按数量拆分的基本操作,通过实例展示了这些函数在处理二维和三维张量时的效果。
摘要由CSDN通过智能技术生成
拼接:拆分:
Cat、StackSplit、Chunk

1、cat(concat)

统计班级学生成绩:
[class1-4, students, scores]
[class5-9, students, scores]

将这九名学生的成绩进行合并

a = torch.rand(4, 32, 8)
b = torch.rand(5, 32, 8)

torch.cat([a, b], dim=0).shape
# dim=0,在第一个维度上进行合并

在这里插入图片描述

在这里插入图片描述

a1 = torch.rand(4, 3, 32, 32)
a2 = torch.rand(5, 3, 32, 32)
torch.cat([a1, a2],dim=0).shape

a3 = torch.rand(4, 1, 32, 32)
torch.cat([a1, a3],dim=1).shape

在这里插入图片描述

2、stack

与concat相比,stack不同的是会创造一个新的维度

a1 = torch.rand(4, 3, 16, 32)
a2 = torch.rand(4, 3, 16, 32)

torch.cat([a1,a2],dim=2).shape
torch.stack([a1,a2],dim=2).shape

a = torch.rand(32, 8)
b = torch.rand(32, 8)

torch.stack([a,b],dim=0).shape

在这里插入图片描述

3、split

可以根据长度和数量进行拆分

a=torch.rand(32,8)
b=torch.rand(32,8)
c=torch.stack([a,b],dim=0)

在这里插入图片描述

①根据长度拆分

aa, bb = c.split(1, dim=0)

在这里插入图片描述

②根据数量拆分

c=torch.stack([a,b,b],dim=0)
aa, bb = c.split([2,1],dim=0)

在这里插入图片描述

4、chunk

根据数量拆分

c=torch.stack([a,b],dim=0)

aa, bb = c.chunk(2,dim=0)

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值