当前位置: 首页 > news >正文

PyTorch 维度变换-Tensor基本操作

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

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

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

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

    >>> 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 高效更推荐

    >>> 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 自动扩张:基于已有的小维度的值 自动 进行广播拓展
    在这里插入图片描述

    >>> b = a+torch.tensor(1) 
    >>> b.shape
    torch.Size([4, 3, 28, 28])
    

  • B站视频参考资料
http://www.lryc.cn/news/369460.html

相关文章:

  • spring 事务失效的几种场景
  • 45岁程序员独白:中年打工人出路在哪里?
  • 深度探讨:为何训练精度不高却在测试中表现优异?
  • 动态内存管理<C语言>
  • 第一百零二节 Java面向对象设计 - Java静态内部类
  • 给自己Linux搞个『回收站』,防止文件误删除
  • Springboot接收参数的21种方式
  • 打造出色开发者体验的十大原则
  • Vue3_对接腾讯云COS_大文件分片上传和下载
  • python免杀--base64加密(GG)
  • Python版与Java版城市天气信息爬取对比分析
  • CSS真题合集(二)
  • 长期出汗困扰你?可能是肾合出了问题
  • Jmeter函数二次开发说明
  • 重新学习STM32(1)GPIO
  • React+TS前台项目实战(二)-- 路由配置 + 组件懒加载 + Error Boundary使用
  • 成为电商低价神秘顾客访问员的必备条件(深圳神秘顾客公司)
  • 现货黄金交易多少克一手?国内外情况大不同
  • LNMP与动静态网站介绍
  • 教育小程序开发:技术实现与实践案例
  • LeetCode 746.使用最小花费爬楼梯
  • 软件设计模式概述
  • 短剧片源火爆,千金难求好剧源
  • MES系统定制 | 生产调度车间排班计划/MES排程排产
  • 【Anaconda】 anaconda常用命令总结
  • VIsio Professional 绘图
  • Flutter InAppWebView Unknown feature SUPPRESS_ERROR_PAGE
  • linux系统PXE自动装机和无人值守
  • 大模型的高考数学成绩单:及格已经非常好了
  • 【漏洞复现】CraftCMS ConditionsController.php 代码执行漏洞(CVE-2023-41892)