tensor的拼接与拆分

tensor的拼接与拆分

cat函数

例子:成绩单的合并

【班级1~4 学生 得分】

【班级5~9 学生 得分】

在0维进行合并,非cat的维度必须一致

a = torch.rand(4,32,8)
b = torch.rand(5,32,8)
c = torch.cat([a,b],dim=0)
c.shape()
#[9,32,8]

stack函数

会新添加一个维度,要保证两个stack的tensor的维度一摸一样,在理解方面是添加了新的概念在里面。

例子:

一班:【32个学生 每个学生8门课程】

二班:【32个学生 每个学生8门课程】

stack之后变为【两个班级 每个班级32个学生 每个学生有8门课程】

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

split函数

split函数按照长度来拆分

例子1:

参数说明:【1,1】表示前面的长度为1,后面的长度也是1

a = torch.rand(2,32,8)
b,c = torch.split([1,1],dim=0)
b.shape
#[1,32,8]
c.shape()
#[1,32,8]

例子2:

参数说明:【2,1】表示前面的长度为2,后面的长度为1(不规则分割的参数含义)

a = torch.rand(3,32,8)
b,c = torch.split([2,1],dim=0)
b.shape
#[2,32,8]
c.shape()
#[1,32,8]

chunk函数

根据数量来进行分割(尽量实现整除,后面除不尽的留给最后)

例子:

a = torch.rand(6,32,8)
b,c,d= torch.chunk(a,3,dim=0)
print(b.shape)
print(c.shape)
print(d.shape)

#torch.Size([2, 32, 8])
#torch.Size([2, 32, 8])
#torch.Size([2, 32, 8])

例子2:

a = torch.rand(5,32,8)
b,c,d= torch.chunk(a,3,dim=0)
print(b.shape)
print(c.shape)
print(d.shape)

#torch.Size([2, 32, 8])
#torch.Size([2, 32, 8])
#torch.Size([1, 32, 8])

例子3:

a = torch.rand(5,32,8)
b,c= torch.chunk(a,2,dim=0)
print(b.shape)
print(c.shape)

#torch.Size([3, 32, 8])
#torch.Size([2, 32, 8])
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在PyTorch中,可以使用split函数来对tensor进行维度拆分。split函数的用法是在指定维度上按照给定的长度进行拆分。例如,使用split函数可以按维度0将一个张量拆分为多个子张量。另外,还可以使用chunk函数进行拆分,该函数与split函数的功能类似,但是用法稍有不同。此外,PyTorch中还提供了reshape和view函数来更改tensor的维度。这两个函数的区别在于view要求tensor的物理内存必须是连续的,而reshape则没有这种要求。需要注意的是,view返回的是一个索引,而reshape返回的是引用还是复制是不确定的。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Pytorch:Tensor之间的拼接拆分拼接:cat、stack;拆分:split、chunk】](https://blog.csdn.net/u013250861/article/details/123417106)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [【用图说话】PyTorch中Tensor拆分](https://blog.csdn.net/weixin_42516475/article/details/119598833)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [PyTorch深度学习基础之Tensor的变换、拼接拆分讲解及实战(附源码 超详细必看)](https://blog.csdn.net/jiebaoshayebuhui/article/details/128000659)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值