Pytorch Tensor 维度操作的形象理解 Tensor.unsqueeze() Tensor.squeeze()

2023-05-16

我们认为数组、矩阵、张量都是有形状的,假如有一个形状是 (2×2×3) 的张量 a,从左到右称为第0维、第1维、第2维…我可以使用 a[1] 取出第0维视角下的第1组数据,可以使用 a[:,:,0] 看到第2维视角下的第0组数据。

并且我可以使用 .unsqueeze 方法在 | 0 | 1 | 2| 这三个维度给出的4个任意空隙插入新的维度,如 b = a.unsqueeze(2)b.size() = torch.size([2,2,1,3]) 。可以比较清晰的理解再最高的维度阔维的操作,这就是一些语言中 (如:Python MATLAB) 的广播机制对应的原理。但是在其他部位扩张维度是一件不好理解的事:

In [2]: import torch
In [3]: a = torch.tensor([[1, 2, 3], [4, 5, 6]])
In [4]: a
Out[4]: 
tensor([[1, 2, 3],
        [4, 5, 6]])
In [5]: a.size()
Out[5]: torch.Size([2, 3])
In [6]: b = a.unsqueeze(1)
In [7]: b
Out[7]: 
tensor([[[1, 2, 3]],

        [[4, 5, 6]]])
In [8]: b.size()
Out[8]: torch.Size([2, 1, 3])

对于一个 (2×3) 的张量,从第0维的一维视角看有两组数据 [1, 2, 3] [4, 5, 6],从二维视角看就是一组平面数据,这个平面内实际上是有两个箱子的,一个箱子里放了 [1, 2, 3],另一个箱子里放了 [4, 5, 6],现在我给他在第一维视角上的箱子外又套了一层箱子。这就是阔维的思想。为了形象的理解张量形状的问题,用这种套箱思想,比线、平面、空间思想更加合理。这也与 Python 输出中的一层层方括号更加的契合。

In [9]: c = a.unsqueeze(2)
In [10]: c
Out[10]: 
tensor([[[1],
         [2],
         [3]],
        [[4],
         [5],
         [6]]])
In [11]: c.size()
Out[11]: torch.Size([2, 3, 1])

根据这种思想可以很好的理解上面的这种阔维做了什么。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Pytorch Tensor 维度操作的形象理解 Tensor.unsqueeze() Tensor.squeeze() 的相关文章

随机推荐

  • "XXXX" is not translated in "en" (English), "zh" (Chinese)

    http www jianshu com p 39cd21451f06 Android Lint 34 XXXX 34 is not translated in 34 en 34 English 34 zh 34 Chinese 字数269
  • this.$refs[‘form‘].resetFields()方法重置表单无效的坑

    this refs form resetFields 方法重置表单无效的坑 1 用法不对 要想this refs form resetFields 方法有效 xff0c 必须配置el form model 属性和el form item中的
  • vue 删除数组中的某一条数据

    一 删除普通数组 let arr 61 1 2 3 4 5 方法一 let index 61 arr indexOf 39 3 39 arr splice index 1 打印结果 1 2 4 5 方法二 let index 61 arr
  • VUE3中watch和watchEffect的用法

    watch和watchEffect都是监听器 xff0c 但在写法和使用上有所区别 watch在监听 ref 类型时和监听reactive类型时watch函数的写发有所不一样 watch在监听 ref 类型时 xff1a lt script
  • vue项目中遇到的问题 cannot find module “imagemin-gifsicle“

    1 vue项目启动报错信息 error cannot find module imagemin gifsicle 解决方案 xff1a 在packgae json 加上 imagemin gifsicle 如图 xff1a 再次运行时报错信
  • 应届生求职简历HTML模板

    优秀的简历需要具备哪些要素 xff1f 1 逻辑清晰 有条有理 HR面临的动辄几百上千份简历 xff0c 简历需要在5秒内让HR能够get到所有重要信息 2 重点突出 xff0c 简历有亮点用成绩说话 xff01 奖学金 xff0c 荣誉奖
  • 终于理清楚了Promise以及async和await

    promise理解 xff1a 1 xff0c 是js异步编程的新的解决方案 2 xff0c 是一个构造函数 3 xff0c 用来封装一个异步操作 xff0c 并可以获得其结果 promise三个状态 xff1a 1 xff0c pendd
  • 青龙脚本合集(不定期更新版)

    京东pangbai66 ql repo https github com pangbai6 pangbai66 git 34 jd jx gua jddj getJDCookie 34 34 activity backUp 34 34 jd
  • antd vue 表格rowSelection选择框功能的使用

    html部分 xff1a lt a table columns 61 34 columns 34 data source 61 34 showList 34 row selection 61 34 rowSelection 34 rowKe
  • fastjson报错:write javaBean error, fastjson version 1.2.76, class io.undertow.servlet.xx,已解决

    错误信息 xff1a com alibaba fastjson JSONException write javaBean error fastjson version 1 2 76 class io undertow servlet spe
  • Java项目个人博客系统(前后端分离+java+vue+Springboot+ssm+mysql+maven+redis)

    源码获取 xff1a 博客首页 资源 里下载 xff01 一 项目简述 本系统功能包括 xff1a 文章展示 热门文章 文章分类 标签云用户登录评论 匿名评论用户留言 匿名留言评论管理 文章发布 文章管理文章数据统计等等 xff0e 二 项
  • markdown源码

    此文章与http blog csdn net baidu 27435045 article details 52943414为对照博客 此篇为markdown源码 xff0c 另一篇为markdown显示出来的样式 在文字写书写不同数量的
  • npm错误 gyp错误 vs版本不对 msvs_version不兼容

    npm错误 gyp错误 vs版本不对msvs version 不兼容 windows SDK 报错 执行更新GYP 语句第一种方案第二种方案 执行更新GYP 语句 npm install g node gyp 最新的GYP 好像已经不支持P
  • uniapp实现购物车功能

    uniapp实现购物车功能 周六我看见一个有个公司招聘需要试岗3天 xff0c 并使用uniapp完成购物车 xff0c 直播间 xff0c 地图 xff0c 首页四个功能方能通过 xff0c 于是乎 xff0c 我趁手上没事就打算自己写一
  • vue3 setup 语法糖

    Vue3官方提供了 script setup 语法糖 只需在script标签中添加setup xff0c 组件只需引入不用注册 xff0c 属性和方法也不用返回 xff0c 也不用写setup函数 xff0c 也不用写export defa
  • 5_04_GLib库入门与实践_线程池

    简介 线程池是在多线程编程时经常用到的技术 在进行多线程任务处理时 xff0c 如果线程频繁创建和销毁 xff0c 将会使系统开销变大 xff0c 在这种情况下 xff0c 上一个任务执行完后不销毁之前创建的线程 xff0c 后续任务重用该
  • codeforce#dp专项

    1 https codeforces com problemset problem 467 C 题意 给定一个长度为n的序列 xff0c 找到k个长度为m的子串 xff08 不是子序列 xff09 xff0c 求能得到的每个子串相加后的最大
  • Java MyBatis的介绍及其执行原理

    写在前面 MyBatis学习 今天我们进行MyBatis框架的学习 xff0c 认识MyBatis及其执行原理 xff0c 感谢你的阅读 xff0c 内容若有不当之处 xff0c 希望大家多多指正 xff0c 一起进步 xff01 xff0
  • Linux工作目录切换命令

    规则目录指的是用户在系统中所处的位置 xff0c 简单记录几个关于目录操作的命令 1 pwd命令 pwd命令用于显示当前用户所在的工作目录 root 64 ecs 168546 etc pwd etc 2 cd命令 cd命令用于切换工作路径
  • Pytorch Tensor 维度操作的形象理解 Tensor.unsqueeze() Tensor.squeeze()

    我们认为数组 矩阵 张量都是有形状的 xff0c 假如有一个形状是 2 2 3 的张量 a xff0c 从左到右称为第0维 第1维 第2维 我可以使用 a 1 取出第0维视角下的第1组数据 xff0c 可以使用 a 0 看到第2维视角下的第