Pytorch——拼接与拆分

1、cat 拼接

例子:两张成绩单的数据

第一张成绩单是班级1~4的成绩单

第二张成绩单是班级5~9的成绩单

a=torch.rand(4,32,8) #表示四个班级的成绩单

b=torch.rand(5,32,8) #表示五个班级的成绩单

#进行合并
torch.cat([a,b],dim=0).shape  #第一个参数表示要合并社么数据,第二个参数表示要合并哪个维度上的数据;

#输出结果torch.Size([9,32,8])

注意:只有需要合并数据的维度的数值可以不一致,其他的数据需要一样

2、Stack 拼接

stack会创建一个新的维度

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

torch.cat([a1,a2],dim=2).shape  #输出结果 [4,3,32,32]

torch.stack([a1,a2],dim=2).shape  #输出结果 [4,3,2,16,32] 
#在dim=2的维度上,也就是数值2,当取0的时候a1,当它取1的时候a2的值。,也就是新增加了一个维度,后面的维度保持一致;


a=torch.rand(32,8) #表示a班级有32个人,每个人有8门课程
b=torch.rand(32,8)#表示b班级有32个人,每个人有8门课程
torch.stack([a,b],dim=0).shape  #输出结果 [2,32,8]  表示有两个班级,每个班级有32个人,每个人有8
门课程;

注意:维度的数值需要一致

3、Split

拆分,按长度开始拆分

a=torch.rand(32,8) #表示a班级有32个人,每个人有8门课程
b=torch.rand(32,8)#表示b班级有32个人,每个人有8门课程
torch.stack([a,b],dim=0).shape  #输出结果 [2,32,8]  表示有两个班级,每个班级有32个人,每个人有8
门课程;

 
aa,bb=c.split([1,1],dim=0) #第一个参数表示要拆分为两个班级以1,1的形式,不再是固定的长度
#输出结果aa=[1,32,8] bb=[1,32,8]

aa,bb=c.split(1,dim=0)#第一个参数表示长度,每一个单元的长度是1,第二个参数表示操作的单元维度是0维度,
#输出结果aa=[1,32,8] bb=[1,32,8]

4、Chunk

拆分,按数量进行拆分

a=torch.rand(32,8) #表示a班级有32个人,每个人有8门课程
b=torch.rand(32,8)#表示b班级有32个人,每个人有8门课程
c=torch.stack([a,b],dim=0).shape  #输出结果 [2,32,8]  表示有两个班级,每个班级有32个人,每个人有8
门课程;
 
aa,bb=c.chunk(2,dim=0)#第一个参数表示要拆分的数量

#输出结果aa=[1,32,8] bb=[1,32,8]

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值