张量维度改变总结

文章目录


一、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]
相关推荐
TigerOne几秒前
第14章 可扩展性设计——插件、Skill与MCP
人工智能
moMo几秒前
Stateless(无状态)— LLM 调用底层规则学习
人工智能
魏祖潇几秒前
我在飞书里养了个“分身”——私聊喊它办事,群里 @ 它干活,还能替我传话
人工智能·机器学习
MacroZheng30 分钟前
斩获20w star!Claude Code最强插件,AI编程必备!
java·人工智能·后端
米小虾40 分钟前
从零实现SKILLHARNESS:让AI Agent学会安全地做事
人工智能·agent
IT_陈寒1 小时前
Vite打包后的路径问题差点让我改了一天代码
前端·人工智能·后端
米小虾1 小时前
SKILLHARNESS:让AI Agent学会"安全地做事"
人工智能·agent
冬奇Lab14 小时前
每日一个开源项目(第140篇):AgentScope 2.0 - 阿里开源的生产级 Agent 框架
人工智能·开源·agent
冬奇Lab14 小时前
Skill 系列(04):Skill 指标体系——L1/L2/L3 三层监控,让质量下降有据可查
人工智能·开源·llm