PyTorch 维度变换-Tensor基本操作

以如下 tensor a 为例,展示常用的维度变换操作

python3 复制代码
>>> a = torch.rand(4,3,28,28)
>>> a.shape
torch.Size([4, 3, 28, 28])
  • view / reshape 两者功能完全相同: a.view(shape)

    python3 复制代码
    >>> a.view(4,3,28*28)  		## a.view(4,3,28,28) 可恢复
  • squeeze / unsqueeze: a.unsqueeze(dim), a.squeeze(dim) 只能挤压 1 维度

    python3 复制代码
    >>> a.unsqueeze(0).shape	## a.squeeze(0) 可恢复
    torch.Size([1, 4, 3, 28, 28])
  • transpose / permute:.t() 只能用于二维矩阵

    python3 复制代码
    >>> a.transpose(0,1).shape    ## 两两交换:交换 0 1 维度
    torch.Size([3, 4, 28, 28])
    >>> a.permute(0,1,2,3).shape  ## 新置维度,非两两交换,更方便 
    torch.Size([4, 3, 28, 28])
  • expand / repeat 两者效果完全相同 expand 高效更推荐

    python3 复制代码
    >>> a.unsqueeze(0).expand(2,4,3,28,28).shape  # 只能拓展 1 维度的
    torch.Size([2, 4, 3, 28, 28])
    >>> a.unsqueeze(0).repeat(2,1,1,1,1).shape    # 不是填目标维度,而是填每个维度的重复次数   
    torch.Size([2, 4, 3, 28, 28])
  • broadcasting 自动扩张:基于已有的小维度的值 自动 进行广播拓展

    python3 复制代码
    >>> b = a+torch.tensor(1) 
    >>> b.shape
    torch.Size([4, 3, 28, 28])

相关推荐
江畔柳前堤3 小时前
roLabelImg 详细安装教程
开发语言·人工智能·后端·云原生
阿里云大数据AI技术3 小时前
分链路差异化设计的DSP准实时数仓|钛动科技基于阿里云实时计算 Flink 版 + DLF Paimon + EMR Serverless StarRocks 的实践
人工智能·flink
陕西企来客3 小时前
2026年7月AI智能搜索曝光趋势研判
大数据·人工智能·机器学习·ai智能搜索曝光
0566463 小时前
agent学习Day15——SQLAlchemy 查询过滤、分页与历史列表接口
python·学习·fastapi
阿里云大数据AI技术4 小时前
从算力到智能体,面向 Agentic AI 的基础设施演进
人工智能·agent
程序员爱德华4 小时前
Python与C++:异同点对比
c++·python
hangyuekejiGEO4 小时前
GEO技术服务选型指南
大数据·人工智能·python
阿里云大数据AI技术5 小时前
EMR Serverless Spark AI Function 的双维降本实践
人工智能·sql·spark
软萌萌的15 小时前
Java Spring Boot 修改yml配置&加载顺序规则
java·spring boot·python
维基框架5 小时前
GitHub源码处理提速 一趟扫描反而更慢
人工智能·github