什么是张量(tensor)?

 

1. 为什么有多个维度?

几维/阶张量,是说它的基坐标有几个的张量。如:

0维张量(tensor of rank 0),就是标量,是说它的基向量是0组,也就是说,没有基向量,这样,就是没有方向的数字,就是标量。

1维张量(tensor of rank 1),就是向量。它的基向量是1组,能够表示方向(基坐标的方向)和长度(数字),这个就是向量。

2维张量(tensor of rank 2),就是矩阵。他的基向量是2组。为什么是两个呢?是为了描述更多的物理场景。比如说,我们要描述一个平面上受力这样一个物理场景。那么,我们知道,一个平面可以通过一个向量来表示。那么,我们可以通过一个向量来表示出这个平面了。但是受力呢,怎么表示?所以,我们需要引入第二个向量,来表示受力的方向+大小。这样,通过两个向量,可以表示出来“一个平面上受力”这样的物理场景了。

同样的,还可以扩展到更高维度的张量。

所以,可以看到,几维的tensor,就是表示基向量的个数是几,也就是基坐标是有几组。

具体可以看https://www.zhihu.com/question/23720923/answer/32739132 这个里面,White Pillow发的youtube的解释的翻译截图。

2. 坐标系无关是什么?

张量的目的,是为了解决同一个物理事件,在多坐标系下的描述不同的问题。

举个简单的例子,一个物体的运动速度是10KM/小时。这个坐标系是KM/小时,量是10。那么,A在这个坐标系上看,就知道这个是什么样的运动速度。但如果另一个人B用其他的坐标系,假设是KM/秒,那么,他看到的就是10/3600KM/秒=0.00278KM/秒。这样,A看到的是10KM/小时,B看到的是0.00278KM/秒,我们说,实质上这两个是一样的,但两个人看到的数据就是不同的,一个是10,一个是0.00278。这两个坐标系之间,是可以通过乘以或者除以3600来做线性变换的。所以,为了摒除坐标系的影响,取一个和坐标系无关的量。这个量,就是张量tensor。

但具体这个张量怎么弄?为什么和坐标系无关还能表示出来?我也没有看到好的解释来理解。

上面的速度的例子,是一维的。更高维度的,也是一样。只不过是变成了矩阵的变换。

3. 机器学习中的tensorflow和物理中的tensor啥关系?

按照我搜索的资料,貌似没啥关系。

Tensorflow中的tensor,浅显一点的话,更多的理解成矩阵就可以了。

如:

0维张量,是标量,就是一个数字。

1维张量,是向量。

2维张量,是矩阵。

3维张量,如,时间序列数据,股价,文本数据,彩色图片(RGB)等。

这里有一些存储在各种类型张量的功用数据集类型:

3维,时间序列。

4维,图像。

5维,视频。

更多的维度就还没看到。

而tensorflow的设计,就是为了各种多维度的数据处理。这些数据可以是0维tensor,1维tensor,还有可能是更高维度的tensor。所以tensorflow中的tensor,需要用一个张量这个更加比标量、向量、矩阵来往更高维度扩张的一个更抽象的概念来把他们都囊括。否则,叫标量flow,向量flow,矩阵flow这样的名字,都不能完整的表达这个意思。所以,叫tensorflow,只是取了这个tensor的概念,可以把他们都囊括进来,没有物理中的tensor那么多的物理含义。至于为什么叫flow,是因为这个需要建立一个图graph,tensor在图中各个节点之间流动来进行计算。

引用:

Alright, what's with the name?…The name TensorFlow comes from the design of the system.…TensorFlow is designed to work with large data sets…made up of many different individual attributes.…Any data that you want to process with TensorFlow…has to be stored in the multi-dimensional array.…These multi-dimensional arrays are also called tensors.…To run operations on the data set,…you construct a computational graph…similar to a flow chart…that determines how data flows…from one operation to the next.…

So it's called TensorFlow…because you're defining how data or tensors…will flow through the system.…

参考:

https://www.zhihu.com/question/20695804/answer/43265860

https://www.zhihu.com/question/20695804/answer/76486670

https://blog.csdn.net/qq_31821675/article/details/79188449

https://www.lynda.com/Google-TensorFlow-tutorials/Why-it-called-TensorFlow/601800/647722-4.html

 

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页