深度学习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])
相关推荐
双向333 分钟前
共绩算力赋能大模型:QWEN-2.5-7B云部署实战解析
人工智能
文心快码BaiduComate8 分钟前
双十一将至,用Rules玩转电商场景提效
前端·人工智能·后端
B站_计算机毕业设计之家10 分钟前
深度学习:Yolo水果检测识别系统 深度学习算法 pyqt界面 训练集测试集 深度学习 数据库 大数据 (建议收藏)✅
数据库·人工智能·python·深度学习·算法·yolo·pyqt
有来技术13 分钟前
vite-plugin-vue-mcp:在 Vue 3 + Vite 中启用 MCP,让 AI 理解并调试你的应用
前端·vue.js·人工智能
该用户已不存在14 分钟前
免费的 Vibe Coding 助手?你想要的Gemini CLI 都有
人工智能·后端·ai编程
thorn_r1 小时前
MCP驱动的AI角色扮演游戏
人工智能·游戏·机器学习·ai·自然语言处理·agent·mcp
得贤招聘官1 小时前
智能招聘革新:破解校招低效困局的核心方案
人工智能
乌恩大侠1 小时前
【Spark】操作记录
人工智能·spark·usrp
一水鉴天1 小时前
整体设计 全面梳理复盘 之27 九宫格框文法 Type 0~Ⅲ型文法和 bnf/abnf/ebnf 之1
人工智能·状态模式·公共逻辑