PyTorch的合并与分割

一、合并

1. cat 函数

  1. 规则:
    1. 所合并的数据的dim一致
    2. 要合并的维度上shape可以不一致,其余的shape必须一致
    3. 理解:[class,student]合并=>[class,student],合并后的班级在含以上相同
  2. 例子
a = torch.rand(4,3,16,32)
b = torch.rand(4,3,16,32)
# 第一参数,list,第二参数,再哪个维度合并
print(torch.cat([a,b],dim=2).shape)
# out: torch.Size([4, 3, 32, 32])

2.stack函数

  1. 规则:
    1. 要合并的两个维度必须一致
    2. 会在合并的维度前插入一个新的维度
    3. 理解:[class,student]合并=>[class_id,class,student],相当于合并后两个班级分开,意义上不同,比如dim=0维度上的班级是尖子班,dim=1维度上的班级是普通班。
  2. 例子
print(' stack ')
print(torch.stack([a,b],dim=2).shape) # torch.Size([4, 3, 2, 16, 32]) ,在dim2插入一个新的维度

a = torch.rand(3,5)
b = torch.rand(3,5)
print(torch.stack([a,b],dim=0).shape)
# out : torch.Size([2, 3, 5])

二、分割

1. split函数

  1. 规则:
    1. 给定在某一维度拆分后长度
    2. 给定在某一维度拆分后的每个长度
  2. 例子
a = torch.rand(32,8)
b = torch.rand(32,8)
c = torch.stack([a,b],dim=0)
aa,bb = c.split([1,1],dim=0) # 给定要拆分的dim=0的shape
print('aa.shape=',aa.shape,' bb.shape=',bb.shape)
# aa.shape= torch.Size([1, 32, 8])  bb.shape= torch.Size([1, 32, 8])
aa,bb = c.split(1,dim=0) #在0维度差分成长度为1
print('aa.shape=',aa.shape,' bb.shape=',bb.shape)
# aa.shape= torch.Size([1, 32, 8])  bb.shape= torch.Size([1, 32, 8])

c = torch.rand(9,4)
aa,bb,cc = c.split(3,dim=0) # 拆分成3个size[3,4]
print(aa.shape,bb.shape,cc.shape)
# torch.Size([3, 4]) torch.Size([3, 4]) torch.Size([3, 4])
aa,bb,cc = c.split([2,3,4],dim=0)
print(aa.shape,bb.shape,cc.shape)
# torch.Size([2, 4]) torch.Size([3, 4]) torch.Size([4, 4])

2. chuck函数

  1. 规则
    1. 参数:要分割的数量(不足的向上取整),和维度
  2. 例子
a = torch.rand(4,5,2)
aa,bb = a.chunk(2,dim=0)
print('aa.shape=',aa.shape,' bb.shape=',bb.shape)
# aa.shape= torch.Size([2, 5, 2])  bb.shape= torch.Size([2, 5, 2])
aa,bb = a.chunk(2,dim=1)
print('aa.shape=',aa.shape,' bb.shape=',bb.shape)
# aa.shape= torch.Size([4, 3, 2])  bb.shape= torch.Size([4, 2, 2])
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值