PyTorch 如何理解张量:一维张量、二维张量、行/列向量、矩阵
理解张量,并将张量与线性代数的知识连接起来,我认为最重要的是理解 tensor 的两个属性:shape 和 ndim 。
ndim 表示张量的维度,一维张量的 ndim 值为 1,二维张量的 ndim 值为 2。
shape 表示张量的形状,它的值是一个列表,列表元素个数与张量的维度相等,每一个元素值表示张量在此维度的元素个数。
举例来说:
>>> tensor = torch.randn(3, 2, 2)
>>> tensor
tensor([[[ 1.1070, -1.3736],
[-1.6743, 1.4504]],
[[ 0.0119, -0.1400],
[ 0.5095, -0.8208]],
[[-1.5840, -0.2786],
[ 2.3791, -1.4570]]])
>>> tensor.ndim
3
>>> tensor.shape
torch.Size([3, 2, 2])
对于这样一个张量,它有三个维度,shape = 3 × 2 × 2 ,这表示此张量有三个二维张量,每个二维张量中有两个一维张量,每个一维张量中有两个元素。
然后我们从线性代数的角度来理解张量:
由于行向量和列向量都是向量,而向量在 PyTorch 中被抽象为一维张量,因此在 PyTorch 中不区分行向量和列向量,一律都是一维张量。
初学者可能会将 torch.Size(1, n) 的张量认为是行向量,将 torch.Size(n, 1) 的张量认为是列向量,然而这两种张量的 ndim = 2 ,因此它们是二维张量,可以类比为线性代数中的矩阵。甚至于 torch.Size(1, 1) 的张量都是矩阵,因为它是二维张量。
关于 PyTorch 中张量(向量/矩阵)的乘法请看这篇博文。
PyTorch 如何理解张量:一维张量、二维张量、行/列向量、矩阵的更多相关文章
- Java基本语法-----java数组(一维数组二维数组)
嘿嘿!你们懂的,又是图片,委屈大家了. java数组(一维数组二维数组) [正在看本人博客的这位童鞋,我看你气度不凡,谈吐间隐隐有王者之气,日后必有一番作为!下面有个"顶"字,你就 ...
- C语言malloc函数为一维,二维,三维数组分配空间
c语言允许建立内存动态分配区域,以存放一些临时用的数据,这些数据不必在程序的声明部分定义,也不必等到函数结束时才释放,而是需要时随时开辟,不需要时随时释放,这些数据存储在堆区.可以根据需要,向系统申请 ...
- Java一维与二维数组的拷贝与排序
Java一维与二维数组的拷贝与排序 目录 Java一维与二维数组的拷贝与排序 Arrays.sort() 一维数组升序排序 二维数组按行升序排序 二维数组按列升序排序 Java中的数组 Java中数组 ...
- poj 2155:Matrix(二维线段树,矩阵取反,好题)
Matrix Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 17880 Accepted: 6709 Descripti ...
- poj 1195:Mobile phones(二维线段树,矩阵求和)
Mobile phones Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 14391 Accepted: 6685 De ...
- Leetcode 304.二维区域和检索-矩阵不可变
二维区域和检索 - 矩阵不可变 给定一个二维矩阵,计算其子矩形范围内元素的总和,该子矩阵的左上角为 (row1, col1) ,右下角为 (row2, col2). 上图子矩阵左上角 (row1, c ...
- Java实现 LeetCode 304 二维区域和检索 - 矩阵不可变
304. 二维区域和检索 - 矩阵不可变 给定一个二维矩阵,计算其子矩形范围内元素的总和,该子矩阵的左上角为 (row1, col1) ,右下角为 (row2, col2). Range Sum Qu ...
- pytorch种, 一维Conv1d, 二维Conv2d
pytorch之nn.Conv1d详解 之前学习pytorch用于文本分类的时候,用到了一维卷积,花了点时间了解其中的原理,看网上也没有详细解释的博客,所以就记录一下. Conv1dclass tor ...
- Unity Animator动画状态机 深入理解(三)二维混合树
介绍二维之前,先说说一维吧~ 这个是通过旋转角度速度快慢来表现身体的大转和中转~ 通过一个-133~133的数值来进行控制. 注:后面的那个对钩是镜像的意思. 其实二维混合树并没有想象中的那么难.先来 ...
随机推荐
- 用Win +R运行快速启动各种程序
许多人认为Windows的Win+R运行就是摆设,除了开cmd和shutdown外毫无用处.其实Win+R是可以用于各种快捷启动的. Win+R可以视作执行一条cmd命令,要用他运行程序,理论上必须输 ...
- vue学习2-bind属性绑定
需要加上 v-html才能显示网页
- centos7 查看开机启动项
使用 systemctl list-unit-files 查看开机启动项 systemctl is-enabled redis.service 是否开机启动
- 使用Xamarin开发移动应用示例——数独游戏(四)产生新游戏算法改进
项目代码可以从Github下载:https://github.com/zhenl/ZL.Shudu .代码随项目进度更新. 前面我们使用一个数组保存预制的游戏,然后随机从中抽取一个游戏作为新游戏,如果 ...
- 一起来找茬:记一起 clang 开启 -Oz 选项引发的血案
作者:字节跳动终端技术 -- 刘夏 前言 笔者来自字节跳动终端技术 AppHealth (Client Infrastructure - AppHealth) 团队,在工作中我们会对开源 LLVM 及 ...
- Grad-CAM:Visual Explanations from Deep Networks via Gradient-based Localization
目录 Grad-CAM:Visual Explanations from Deep Networks via Gradient-based Localization 1.Abstract 2.Intr ...
- python 小兵 三元运算符
1 if 条件成立: 2 val = 1 3 else: 4 val = 2 改成三元运算: val = 1 if 条件成立 else 2 举例 条件成立走左边,条件成立走右边 a = 2 b = 5 ...
- 解决sublime代码不提示的问题
如果想让sublime在你输入标签的过程中给你提示,需要按要求开启以下功能. 1.开启代码自动提示功能
- HashCode补充
public class Demo4 { public static void main(String[] args) { String str1 = "hello"; Strin ...
- Shell编程之循环语句与echo的用法
Shell编程之循环语句与echo的用法 目录 Shell编程之循环语句与echo的用法 一.echo用法 1. echo常用选项 2. 常用的转义字符 3. 特殊符号%.#的用法 二.循环语句 1. ...