tensor的个人理解

tensor的个人理解

  • 开始
    • 从数学来讲
    • 从Nvidia来讲
  • 结束

开始

最开始接触深度学习的时候,都有一个疑问,为什么是tensor?什么是tensor?tensor有什么好处?要回答这些问题,我们就要从最开始的地方讲起

从数学来讲

首先,如果你能科学上网,强推这一篇:
What’s a Tensor?

如果不能,我们来看:
数学中,我们有 tensor (张量)、vector (向量)、scalar(标量)。看起来挺玄乎,但其实他们都是张量的所属范围之内。
标量大家都知道,就是一组数,最常见的 BGR 三原色表示就是标量的一种,他们没有“方向”这个概念。
对于向量,我们知道,他是一个“有向线段”。例如,在确定坐标系为笛卡尔坐标系前提下,我们想表示一个水平面上、与x轴夹角37°的长5的线段,我们可以用(4,3,0)来进行表示, 这里其实相当于省略了基向量x y z。并且,我们同时知道,我们可以用 Ax(subscript) Ay Az 来代替性的表示上面那个,也就是 (Ax,Ay,Az) 来表示我们的线段。
这时候,我们发现,要是有想表示 Axx, Axy, Axxx 这种东西时候怎么办呢,我们的基向量就那三个啊。为了解决这个问题,我们引入了张量这个概念,也就是基向量与分量的组合。
我们可以说:
标量是0阶张量 3^0=1 它只有大小,没有方向
向量是1阶张量 3^1=3 它有三个方向 Ax Ay Az
张量可以多变 3^x
也就是说,如果表示 Axxx Axxy … Azzy Azzz 的话,我们就可以使用三阶张量进行表示,个数就是 3^3=27;四个x就是81

从Nvidia来讲

从上一个标题,我们知道,tensor是一种强大的表示方向和空间的数学方法。而众所周知的是,CV中最主要的就是对矩阵的操作,考虑到 batch 的话,就是四维矩阵。而这些矩阵的维数一般都很高,这对算力的需求就较大。摘一段 Nvidia 官网上的话:

NVIDIA® Tesla® GPUs are powered by Tensor Cores, a revolutionary technology that delivers groundbreaking AI performance. Tensor Cores can accelerate large matrix operations, which are at the heart of AI, and perform mixed-precision matrix multiply and accumulate calculations in a single operation. With hundreds of Tensor Cores operating in parallel in one NVIDIA GPU, this enables massive increases in throughput and efficiency.

反正就是说他 GPU 里的 tensor 核心加速运算就是了。这也就是 tensorflow和torch 中tensor都是核心的原因之一啊。因为其实这些东西不就是 numpy 吗,转成 tensor 不就是为了加速计算嘛。

结束

当然,这仅仅是我一点浅显的理解,后续我会继续补充,欢迎大家批评指正

你可能感兴趣的:(tensor,小知识点,随便写写)