1 张量的定义
张量tensor理论是数学的一个分支学科,在力学中有重要的应用。张量这一术语源于力学,最初是用来表示弹性介质中各点应力状态的,后来张量理论发展成为力学和物理学的一个有力数学工具。
张量(Tensor)是一个定义在一些向量空间和一些对偶空间的笛卡尔积上的多重线性映射,其坐标是|n|维空间内,有|n|个分量的一种量, 其中每个分量都是坐标的函数, 而在坐标变换时,这些分量也依照某些规则作线性变换。r 称为该张量的秩或阶(与矩阵的秩和阶均无关系)。
2 深度学习中的张量
在深度学习中,Tensor实际上就是一个多维数组(multidimensional array)。
Tensor | 表现形式 |
---|---|
0维张量 | 标量、常数(0、1等) |
1维张量 | 矢量、一维向量 |
2维张量 | 二维矩阵 |
3维张量 | 三维矩阵 |
单个彩色图片其实就可以看作为一个三维的张量。彩色图片RGB包含有三个图层,每层又是一个[0,255]的二维矩阵。
3 PyTorch库中张量的应用
在PyTorch库中有专门处理张量的类torch.Tensor,该类有一系列方法用于进行张量之间的各种运算。张量之间的加减乘除点乘等都可以通过该类实现。
import torch
torch.tensor([
[[9,1,8],[6,7,5],[3,4,2]],
[[2,9,1],[8,6,7],[5,3,4]],
[[1,5,9],[7,2,6],[4,8,3]]
])
上述代码创建了一个三维的张量,也可以理解为一个三维的数组。==所以为什么叫张量而不是矩阵呢?==就是因为我们通常需要处理的数据有零维的(单纯的一个数字)、一维的(数组)、二维的(矩阵)、三维的(空间矩阵)、还有很多维的。Pytorch
为了把这些各种维统一起来,所以起名叫**张量Tensor**。
PyTorch中的Tensor
支持超过一百种操作,包括转置、索引、切片、数学运算、线性代数、随机数等等,总之,凡是你能想到的操作,在pytorch里都有对应的方法去完成。
参考资料
[1] 张量 力学术语)(人工智能术语)
[2] 笔记 | 什么是张量(tensor)& 深度学习 - 知乎 (zhihu.com)
[3] 什么是张量? - 知乎 (zhihu.com)