对张量tensor的一些理解
对张量tensor 的一些理解
我们知道经常用于神经网络的TensorFlow ,但是没想过Tensor是什么意思,今天我们就来小小的探究一下。下面的理解有些不一定对,很多都是从概念层面考虑的,就当时对张量这个概念的小探究。
张量的基本概念:
组件 component 组成张量的基本成分
基 basic vectors 构成组件的基本向量
张量的阶 rank 表示需要多少个基本向量完整解释每一个部件。
从不同的rank来分析:
1. 标量:
Rank=0 也就是0阶张量。
具有一个组件,每个组件没有基。
比如温度标量(0阶张量):273开尔文,0摄氏度,32华氏度。这样只需要定义一个单位,就可以表示温度,并且温度没有方向。
所以标量为:1 component,0 basic vectors/ component。
2.向量:
Rank=1 也就是1阶张量。
具有d个组件,每个组件具有一个基。
首先说表示三维空间中(维度d=3)的一个空间向量(一阶张量):那么此向量具有三个组件,向量=(x,y,z).且X、Y、Z坐标每个都具有一个基向量。所以说此时的空间向量就是具有3个组件,每个组件具有一个基。
我们再扩展一下,比如深度学习中研究身体素质,创造一个表示身体素质的向量(一阶张量),具有几个组件(或者说维度):身高、体重、臂力、速度等,此时d=4,这样这个向量就是:身体素质=(身高,体重,臂力,速度)。身高,体重,臂力,速度这些假设放在一个四维坐标系下,那么每个组件就具有了一个方向,也就是各有一个基向量来表示。
所以向量为:d component(d由向量的维度确定) ,1 basic vectors/ component。
3.矩阵(其实矩阵只是2阶张量的表示形式,但是张量与矩阵有不同,在于张量表示具体涵义,满足张量的变换原理,而矩阵只是数组组合)
Rank=2 也就是2阶张量。
具有d个组件,每个组件具有2个基。
首先以三维空间中某物体内部受力举例,每种力(组件)具有两个基,受力面、受力方向。以下图Pxx为例,Pxx表示,x面(法向量x)上x方向上的力。这样的力一共有9种,所以是9各组件,且每个组件具有两个基向量。
组成矩阵的话就是这样:
在这种情况下,代表此受力情况的P张量就具有9个组件,2个基向量。
可以看到行代表的物理意义力的方向具有三个维度,列代表的受力面也有三个维度。所以组件数目设为N,阶数为n,各阶维度设为a,则有:
也就是组件数目等于各阶维度的连乘。
4. 推广 图像作为张量
如果图像作为卷积神经网络的第一层输入,这个图像可以看做一个三阶张量。
具有H * W * C个组件,每个组件具有三个基向量,行,列,通道,但是这并不是平时使用的坐标的概念,而是行具有W个维度,列方向具有H个维度,通道方向有C个维度。每一个单通道像素就是一个组件。
自己的理解:张量的阶是特性数量,比如评价一个人,可以用两个阶表示,身体素质与脑力,也就是各个阶不一定是同一种东西。比如上面那个物体内受力的例子,其实两个阶是力的方向与受力面,代表的物理属性不一致。
身体素质可以分为 身高,体重,速度。
脑力可以分为 智力,情商。
这样组成一个2阶张量,共6个组件,每个组件2个基向量,用矩阵表示:
每个组件表示一个组合的属性,是不同的。
张量的其他一些说法:
- 一个量, 在不同的参考系下按照某种特定的法则进行变换, 就是张量。
- 用张量语言描述的物理定律自动保证了不随参考系变化的这一性质. 而且从记号的角度看, 用张量也更加简洁
- 矩阵的意义是线性变换, 相似矩阵是同一个线性变换在不同的基下的表示. 在数学家眼中, 张量已经被抽象成了线性变换。
- 张量的定义是从坐标转换来的。只要服从那个转换规律,那就是张量。
- (计算机方面的说法)vector是一维的在学到tensor之前,你总该学过线性代数了吧,总该知道vector和matrix了吧。vector是一维的matrix是二维的。而tensor是这些的泛化,用rank来表示。rank = 0的时候,就是标量,rank = 1是vector,rank = 2是matrix,rank >= 2就没有自己的名称,都用rank N tensor来说了。也就是说,张量是向量、矩阵等变换性质的推广,多重线性函数的感觉。
- 或者就把张量当做多元数组:
参考:
张量Tensor是什么,有什么用
https://www.bilibili.com/video/BV1dJ411W7Xm?from=search&seid=844787483587450591
张量怎么变换,张量是矩阵吗?
https://www.bilibili.com/video/av93063462/?spm_id_from=333.788.b_636f6d6d656e74.14
什么是张量?