深度学习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])
相关推荐
2601_955759418 小时前
Claude Opus 5 如何提升 SEO 内容生产效率:从关键词到文章发布
人工智能
小二·8 小时前
大模型效率化革命:稀疏注意力+量化蒸馏+推理压缩,2026年如何用更少算力跑更强模型
人工智能
MartinYeung59 小时前
DC Scameter:一份反诈骗相关的专业分析报告
人工智能·安全
硅徒9 小时前
企业 RAG 的检索注入:让知识库吐出机密文档的攻击面
人工智能
Getflare9 小时前
前端 + UI 设计 + AI:这不是三个工种,是一个新三角能力模型(附自检清单)
前端·人工智能·ui
墨舟的AI笔记9 小时前
Core Web Vitals 闭环:LCP/INP/CLS 的前端监控落地
人工智能
NPE~9 小时前
[AI]Agent开发——ADK框架使用
人工智能·python·ai·教程·adk·agent开发
莫名的好感°9 小时前
国内AI视频工具哪家强?FusionAI聚合即梦Seedance、可灵Kling、HappyHorse、Google Veo,一个平台看懂所有选择
大数据·人工智能
语歌9 小时前
AI 语言学习系统的工程边界:为什么 LLM 不该负责复习排期
人工智能·swift