张量维度改变总结

文章目录


一、view() 或 reshape()

  view() 或 reshape(): 这两个函数可以用于改变张量的形状,但保持元素总数不变。它们可以接受一个新的形状作为参数,并返回一个新的张量。例如:

python 复制代码
import torch

x = torch.randn(2, 3, 4)  # 创建一个形状为 [2, 3, 4] 的张量

x_viewed = x.view(2, 12)  # 改变形状为 [2, 12]
x_reshaped = x.reshape(6, 4)  # 改变形状为 [6, 4]

二、unsqueeze()

  unsqueeze(): 这个函数可以在指定位置插入一个新的维度。它接受一个整数作为参数,表示要插入的位置。例如:

python 复制代码
import torch

x = torch.randn(3, 4)  # 创建一个形状为 [3, 4] 的张量

x.unsqueeze(0)  # 在第 0 个位置插入一个新的维度,形状变为 [1, 3, 4]
x.unsqueeze(1)  # 在第 1 个位置插入一个新的维度,形状变为 [3, 1, 4]
python 复制代码
import torch

x = torch.randn(2, 3)  # 创建一个形状为 [2, 3] 的张量

x_unsqueezed = torch.unsqueeze(x, dim=0)  # 在第 0 个位置插入一个新的维度,形状变为 [1, 2, 3]

三、squeeze()

  squeeze(): 这个函数可以删除维度为 1 的维度。它会返回一个新的张量,其中已删除了所有维度为 1 的维度。例如:

python 复制代码
import torch

x = torch.randn(1, 3, 1, 4)  # 创建一个形状为 [1, 3, 1, 4] 的张量

x.squeeze()  # 删除所有维度为 1 的维度,形状变为 [3, 4]

四、transpose()

  transpose(): 这个函数可以交换张量的维度顺序。它接受两个整数作为参数,表示要交换的维度的位置。例如:

python 复制代码
import torch

x = torch.randn(2, 3)  # 创建一个形状为 [2, 3] 的张量

x.transpose(0, 1)  # 交换维度 0 和维度 1 的位置,形状变为 [3, 2]

五、torch.expand_dims

  torch.expand_dims(input, dim): 这个函数接受一个张量 input 和一个整数 dim,表示要在 dim 位置插入一个新的维度。它会返回一个新的张量,其中插入了一个维度。例如:

python 复制代码
import torch

x = torch.randn(2, 3)  # 创建一个形状为 [2, 3] 的张量

x_expanded = torch.expand_dims(x, dim=1)  # 在第 1 个位置插入一个新的维度,形状变为 [2, 1, 3]
相关推荐
agicall.com4 分钟前
信创电话助手录音盒多路设备配置教程
人工智能·语音识别·信创电话助手·座机语音转文字·固话座机录音转文字
MiYi124065 分钟前
2026 企业 AI 办公工具选型指南:从需求分析到任务交付的完整评估框架
大数据·人工智能
海宇服务13 分钟前
零信任架构实战:基于海宇车辆估值构建自动化车队残值重估网关
运维·人工智能·架构·自动化
johnsong18 分钟前
AI前沿日报 2026-10-01:驯服、解剖与隐形 — AI治理溃败×编码Agent拆解×隐写推理突破
人工智能
林伽一18 分钟前
常驻智能体产品化元年开启,安全治理成为产业新门槛|2026年10月1日
人工智能·安全·chatgpt
10年前端老司机19 分钟前
MCP 技术分享:从协议握手到 LangGraph 多 Server 调用
人工智能·agent·mcp
工作10年+,存储芯片行业20 分钟前
SSD 行业国际新闻汇总:市场动态与技术进展
人工智能·ssd·存储·pcie·主控·nand·闪存
Francek Chen21 分钟前
【华为Mate90系列】麒麟9050Pro首秀!Mate90系列及多款新品正式发布
人工智能·华为·harmonyos·鸿蒙7·麒麟芯片
data analyse 45622 分钟前
数据合规的同意记录怎么留存?
前端·人工智能·数据分析
zhangfeng113323 分钟前
neo lab(也写作 Neolab / NeoLab)新一代AI前沿实验室
人工智能