张量维度改变总结

文章目录


一、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]
相关推荐
王中阳Go4 分钟前
09 Go Eino AI应用开发实战 | Hertz Web 框架搭建
人工智能·后端·go
智驱力人工智能14 分钟前
从人海战术到智能巡逻 城市街道违规占道AI识别系统的实践与思考 占道经营检测系统价格 占道经营AI预警系统
人工智能·安全·yolo·目标检测·无人机·边缘计算
STLearner15 分钟前
VLDB 2025 | 时间序列(Time Series)论文总结(预测,异常检测,压缩,自动化等)
数据库·人工智能·深度学习·神经网络·机器学习·数据挖掘·时序数据库
GEO-optimize20 分钟前
2025年末GEO服务商推荐甄选:综合实力测评及优选指南
人工智能·搜索引擎·geo
Ven%26 分钟前
【AI大模型算法工程师面试题解析与技术思考】
人工智能·python·算法
我很哇塞耶30 分钟前
BOSS直聘3B超越Qwen3-32B,更多训练数据刷新小模型极限
人工智能·ai·大模型
趁你还年轻_30 分钟前
超越对话:AI 智能体如何自主完成复杂任务?
人工智能
禾高网络41 分钟前
互联网医院系统,互联网医院系统核心功能及技术
java·大数据·人工智能·小程序
AI营销实验室42 分钟前
原圈科技AI CRM系统:数据闭环与可视化革新的行业突破
大数据·人工智能
AndrewHZ1 小时前
【复杂网络分析】什么是图神经网络?
人工智能·深度学习·神经网络·算法·图神经网络·复杂网络