张量是一棵树

长久以来,张量和其中维度的概念把我搞的晕头转向。

一维的张量是数组,二维的张量是矩阵,这也很有道理。

但是给一个二维张量,让我算出它每一行的和,应该用 sum(dim=0) 还是 sum(dim=1)? 这个问题还得让我想个一会儿。

更别说四维的张量是什么,一百维的张量又是什么,这种问题了,我不知道,想想就头大。

但是直到把张量看成一棵树,许多问题就迎刃而解~

如下图所示,分别表示三种不同形状的张量:

基本规律是:

  1. 不算最上边的树根节点,剩下的节点有几层,那这个张量就是几维的。(换种说法:张量的维数=树高-1)
  2. 维度dim=0对应树中的第二层,维度dim=1对应树中的第三层,以此类推。
  3. 每一层的维度 = 这一层的每个节点有几个亲兄弟节点。

带有维度的运算

张量以某个维度进行运算,就是:

  1. 把对应树中这个维度的亲兄弟节点都移动至重叠状态
  2. 上述移动会导致部分叶子节点重叠,把重叠的叶子节点进行相应运算
  3. 删除该维度

以 shape 为 [1, 2, 2] 的张量t 举例说明:

t.sum(dim=1)



最终张量的shape是 [1, 2]

t.sum(dim=0)

第0维的节点只有一个,所以不用进行兄弟节点之间的合并,自然也不会有重叠的叶子节点,所以就不用运算,只需要删除第0维即可。



最终张量的shape是 [2, 2]

t.sum(dim=2)



删掉的恰好是最后一层叶子节点,数据上移到新的叶子节点中。

最终张量的shape是 [1, 2]

增加删除维度

给张量增加一个维度等价于给树增加一层。

给张量删除一个维度等价于给树删除一层。

但是,增删的维度是有限制的:维度必须为1。

删除一个维度为1的层

增加一个维度为1的层

示例1

示例2

总结

将张量看成一个树形结构能在某种程度更加直观的理解张量的概念及其相关运算。

Pytorch 中张量的理解的更多相关文章

  1. tensorflow中张量的理解

    自己通过网上查询的有关张量的解释,稍作整理. TensorFlow用张量这种数据结构来表示所有的数据.你可以把一个张量想象成一个n维的数组或列表.一个张量有一个静态类型和动态类型的维数.张量可以在图中 ...

  2. pytorch之张量的理解

    张量==容器 张量是现代机器学习的基础,他的核心是一个容器,多数情况下,它包含数字,因此可以将它看成一个数字的水桶. 张量有很多中形式,首先让我们来看最基本的形式.从0维到5维的形式 0维张量/标量: ...

  3. [转载]Pytorch中nn.Linear module的理解

    [转载]Pytorch中nn.Linear module的理解 本文转载并援引全文纯粹是为了构建和分类自己的知识,方便自己未来的查找,没啥其他意思. 这个模块要实现的公式是:y=xAT+*b 来源:h ...

  4. pytorch中tensor张量数据基础入门

    pytorch张量数据类型入门1.对于pytorch的深度学习框架,其基本的数据类型属于张量数据类型,即Tensor数据类型,对于python里面的int,float,int array,flaot ...

  5. 对pytorch中Tensor的剖析

    不是python层面Tensor的剖析,是C层面的剖析. 看pytorch下lib库中的TH好一阵子了,TH也是torch7下面的一个重要的库. 可以在torch的github上看到相关文档.看了半天 ...

  6. pytorch中的激励函数(详细版)

          初学神经网络和pytorch,这里参考大佬资料来总结一下有哪些激活函数和损失函数(pytorch表示)      首先pytorch初始化:   import torch import t ...

  7. 关于Pytorch中autograd和backward的一些笔记

    参考自<Pytorch autograd,backward详解>: 1 Tensor Pytorch中所有的计算其实都可以回归到Tensor上,所以有必要重新认识一下Tensor. 如果我 ...

  8. PyTorch 中的乘法:mul()、multiply()、matmul()、mm()、mv()、dot()

    torch.mul() 函数功能:逐个对 input 和 other 中对应的元素相乘. 本操作支持广播,因此 input 和 other 均可以是张量或者数字. 举例如下: >>> ...

  9. PyTorch 中 torch.matmul() 函数的文档详解

    官方文档 torch.matmul() 函数几乎可以用于所有矩阵/向量相乘的情况,其乘法规则视参与乘法的两个张量的维度而定. 关于 PyTorch 中的其他乘法函数可以看这篇博文,有助于下面各种乘法的 ...

随机推荐

  1. ssh 免密码登陆设置不成功

    记一次centos6设置免密码登陆设置不成功的解决.自己挖的坑自己填. ssh 免密码登陆设置( 正常情况下是这样的,设置成功后登陆主机是不需要密码的) [root@master .ssh]# ssh ...

  2. 阿里不允许使用 Executors 创建线程池!那怎么使用,怎么监控?

    作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 五常大米好吃! 哈哈哈,是不你总买五常大米,其实五常和榆树是挨着的,榆树大米也好吃, ...

  3. SysCtlDelay 实现延时

    SysCtlDelay 实际上由 3 条汇编指令实现,一次可以延时 3 个 clock. 例如,初始化系统时钟: SysCtlClockFreqSet((SYSCTL_XTAL_16MHZ | SYS ...

  4. 记录一下网上找到的别人写的angualr总结

    感觉写的不错,所以讲链接保存下来 https://www.jianshu.com/p/f0f81a63cbcb

  5. Python编程基础:循环结构

    一.为什么要用循环 现在有一个任务,要求你输出一百遍"好好学习,天天向上!",想一想,你会怎么做? (一)老老实实的笨方法 print("第1遍写:好好学习,天天向上!& ...

  6. Autofac的基本使用---5、常用配置

    Autofac的基本使用---目录 创建实例方法 参考:http://www.cnblogs.com/manglu/p/4115128.html InstancePerDependency 对每一个依 ...

  7. EXCEL2010分成多个窗口的,解决单个窗口显示多个文档的弊病

    本操作需要修改注册表,请在修改之前导出要修改的项目以备份. 1.定位到[HKEY_CLASSES_ROOT\Excel.Sheet.12\shell\Open],导出保存.展开Open,将ddeexe ...

  8. .NET Core AWS S3云存储

    前言 最近有需要用到AWS S3云存储上传附件,这里对利用.NET或.NET Core在调用SDK APi需要注意的一点小问题做个记录,或许能对后续有用到的童鞋提供一点帮助 AWS S3云存储 官方已 ...

  9. 服务器挂掉导致需要对k8s新增节点

    [导读]今日是周六,本想午休起来之后写篇有关kubernetes service的文章,没想到两台虚拟机接连挂掉,所以又重新创建了两台虚拟机.新建时又一直黑屏,所以只能克隆. 由于虚拟机是新建的,所以 ...

  10. 卷积神经网络CNN-学习1

    卷积神经网络CNN-学习1 十年磨一剑,霜刃未曾试. 简介:卷积神经网络CNN学习. CNN中文视频学习链接:卷积神经网络工作原理视频-中文版 CNN英语原文学习链接:卷积神经网络工作原理视频-英文版 ...