[PyTorch]PyTorch中张量(Tensor)拼接和拆分操作

PyTorch深度学习总结

第四章 PyTorch中张量(Tensor)拼接和拆分操作


文章目录


前言

上文介绍了PyTorch中张量(Tensor)的切片操作,本文主要介绍张量的拆分拼接操作。


一、张量拼接

函数 描述
torch.cat() 将张量按照指定维度关系进行拼接
torch.stack() 将张量按照指定维度关系进行拼接(用法同cat相同
python 复制代码
# 引入库
import torch

# 创建张量
A = torch.arange(9).reshape(1, 3, 3)
print(A)

输出结果为:

tensor(

\[\[0, 1, 2\], \[3, 4, 5\], \[6, 7, 8\]\]\]) *** ** * ** *** **1、按照维度1进行拼接:** ```python B0 = torch.cat((A, A), dim=0) print(B0) ``` 输出结果为: tensor(\[\[\[0, 1, 2\], \[3, 4, 5\], \[6, 7, 8\]\], \[\[0, 1, 2\], \[3, 4, 5\], \[6, 7, 8\]\]\]) *** ** * ** *** **1、按照维度2(`行`)进行拼接:** ```python B1 = torch.cat((A, A), dim=2) print(B1) ``` 输出结果为: tensor(\[\[\[0, 1, 2\], \[3, 4, 5\], \[6, 7, 8\], \[0, 1, 2\], \[3, 4, 5\], \[6, 7, 8\]\]\]) *** ** * ** *** **1、按照维度3(`列`)进行拼接:** ```python B2 = torch.cat((A, A), dim=2) print(B2) ``` 输出结果为: tensor(\[\[\[0, 1, 2, 0, 1, 2\], \[3, 4, 5, 3, 4, 5\], \[6, 7, 8, 6, 7, 8\]\]\])

二、张量拆分

函数 描述
torch.chunk() 将张量分割为特定数量的块(当张量对应维度元素数量不足以拆分时会按照可以拆分数量进行拆分,且会出现不均等拆分情况)
torch.split() 将张量分割为特定数量的块,可以指定块的大小

注意:
torch.chunk():当张量对应维度元素数量不足以拆分时,会按照可以拆分的最大数量进行拆分,且会出现不均等拆分情况,且最后一个块最小

下文使用B0进行示例

复制代码
B0 = tensor([[[0, 1, 2],
         [3, 4, 5],
         [6, 7, 8]],
        [[0, 1, 2],
         [3, 4, 5],
         [6, 7, 8]]])

1、torch.chunk()按照维度1进行拆分:

python 复制代码
C1, C2 = torch.chunk(B0, 2, dim=1) # 维度1只有三组元素,所以会按照2:1的比例进行拆分
print(C1, C2)

输出结果为:

tensor([[[0, 1, 2],

3, 4, 5\], \[6, 7, 8\]\]\]) tensor(\[\[\[0, 1, 2\], \[3, 4, 5\], \[6, 7, 8\]\]\]) *** ** * ** *** **1、`torch.chunk()`按照维度2进行拆分:** ```python D1, D2 = torch.chunk(B0, 2, dim=1) # 3表示指定拆分数,但由于不足以拆分,所以只会拆分两组 print(D1, D2) ``` 输出结果为: tensor(\[\[\[0, 1, 2\], \[3, 4, 5\]\], \[\[0, 1, 2\], \[3, 4, 5\]\]\]) tensor(\[\[\[6, 7, 8\]\], \[\[6, 7, 8\]\]\])

相关推荐
这是谁的博客?6 小时前
AI Agent 安全架构设计:漏洞分析与防护策略深度解析
人工智能·安全·网络安全·ai·agent·安全架构·架构设计
人月神话-Lee6 小时前
【图像处理】Sobel 边缘检测——让机器“看见“轮廓
图像处理·人工智能·计算机视觉·ios·ai编程·swift
冬奇Lab6 小时前
Agent系列(四):工具调用深度解析——Agent 的手和眼
人工智能·llm
Black蜡笔小新7 小时前
自动化AI算法训练服务器DLTM助力医学影像分析进入AI智能分析新时代
人工智能·算法·自动化
隔壁大炮7 小时前
MNE-Python 第9天学习笔记:源定位基础
python·eeg·mne·脑电数据处理
冬奇Lab7 小时前
一天一个开源项目(第111篇):Understand Anything - 把代码库变成可探索知识图谱的 AI 引擎
人工智能·开源·llm
猿饵块7 小时前
git--github
人工智能
黎阳之光7 小时前
黎阳之光:以视频孪生重构智慧防火,打造“天空地人智”一体化森林防火新范式
大数据·运维·人工智能·物联网·安全
why技术7 小时前
AI Coding开始进入第四个时代,我还没上车呢!
前端·人工智能·后端
java1234_小锋7 小时前
Spring AI 2.0 开发Java Agent智能体 - MCP(模型上下文协议)
java·人工智能·spring·spring ai