深度学习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])
相关推荐
挖掘狂人25 分钟前
程序员转型抉择:转 Agent 开发还是转全栈?一份基于招聘市场的冷静分析
人工智能·程序员·agent
墨林陌26 分钟前
AI 热点日报(2026-11-10):英伟达AI Day首尔开幕,苹果重回市值第一,黄仁勋遭免职调查
人工智能
Kapaseker39 分钟前
你花大价钱买的那张 5090 可能跑不了本地 AI 模型
人工智能
程序员果子1 小时前
本体构建方法
人工智能·python·知识图谱·agent框架·本体
深蓝AI1 小时前
Meta FAIR 开源 e-means:k-means 十分之一的轮数跑出更低损失,已并入 Faiss
人工智能·程序员
IT_陈寒1 小时前
Vue这个奇葩的响应式问题让我加班到凌晨
前端·人工智能·后端
yunhuibin1 小时前
AI分类任务种类
人工智能·自然语言处理·分类
东坡肘子1 小时前
参与学生移动应用大赛有感 -- 肘子的 Swift 周报 #161
人工智能·swiftui·swift
天天被压力1 小时前
【A股分钟级高频数据完全手册 #11】券商实时行情数据接口:实时交易(券商源)接入与字段
java·人工智能·python