美文网首页真格量化
TensorFlow中的Tensor是什么?

TensorFlow中的Tensor是什么?

作者: ce2a5fc7b1e4 | 来源:发表于2019-06-10 09:15 被阅读42次

随着越来越多的机器学习研究者使用TensorFlow作为作为其研究工具,我们有必要了解一下什么是TensorFlow

“Flow”似乎容易理解,不管是音乐(可以视为数据的一种)还是其他数据,只要“流动”起来,都可以视为“Flow”。那么Tensor(张量)又是什么呢?

张量产生的背景

在物理学研究中,科学家的目的是要用数学量来表示物理量,可是到了一定阶段标量加上向量,都不足以表达所有的物理量,所以就需要扩大数学量的概念,于是“张量”就出现了。

张量的概念

几何代数中定义的张量是基于向量和矩阵的推广,通俗一点理解的话,我们可以将标量视为零阶张量,矢量视为一阶张量,那么矩阵就是二阶张量。

张量定义

张量的严格定义是利用线性映射来描述的。与矢量相类似,定义由若干坐标系改变时满足一定坐标转化关系的有序数组成的集合为张量。 

从几何角度讲,

它是一个真正的几何量,也就是说,它是一个不随参照系的坐标变换(其实就是基向量变化)而变化的东西。最后结果就是基向量与对应基向量上的分量的组合(也就是张量)保持不变,比如一阶张量(向量)a可表示为a

= x*i + y*j。由于基向量可以有丰富的组合,张量可以表示非常丰富的物理量以及其他很多维数据结构(可以视为复杂数据结构的“容器”)。

讲到这里,我们可以认为TensaorFlow是一个对高维数组进行各种计算的工具。

比如图形RGB文件(用于机器学习中的图像识别)中包含三种原色(红、绿、蓝)和位置信息的数据:

或者一个包含n种商品在m天里每分钟高开低收价格的数组(用于设计量化交易策略)。

换一种定义方式

一个(p,q)型张量,就是一个映射:

其中V是矢量空间,V*是对应的对偶空间。

举一些例子:

如果一个物理量,在物体的某个位置上只是一个单值,那么就是普通的标量,比如密度。如果它在同一个位置、从不同的方向上看,有不同的值,而且这个数恰好可以用矩阵乘观察方向来算出来,就是张量。

张量的理解:张量是有大小和多个方向的量。这里的方向就是指张量的阶数。

空间维度n:一般我们观察3维空间,也可以是4维及以上维度。

张量阶数m:在固定的3维度空间再谈张量的阶数,阶数小于等于维数,即m<=n。

下面区分这个量:张量的阶数(张量的方向数)和所在空间的维数(所在空间的方向数)的区别。

在二维空间里,二维二阶张量(平面应力张量)的每个方向都可以用二维空间两个方向表示。(区分2阶张量的2个方向,和二维空间的两个方向x,y)所以共有2^2=4个方向。

在三维空间里,三维二阶张量(空间应力张量)的每个方向都可以用三维空间三个方向表示。(区分2阶张量的2个方向,和三维空间的三个方向x,y、z)所以共有3^2=9个方向。

张量积的定义

我们已经知道矩阵乘积

向量的内积

以及矩阵和向量的乘法

于是我们发现了共同点,有一个相同指标在经过求和之后就看不见了。如果你只是把两个量放在一起,不求和,只是构造多重线性的话,我们就发现了张量积,比如向量

于是我们构造了一个矩阵,也就是二阶张量。类似地,对于矩阵当然也可以

这里我们就构造了一个四阶张量。

张量积之一概念有很多种理解方式,在不同的语境下面会有不同的看法。但是如果拿来跟矩阵乘积比较的话,我们觉得比较好的说法是,张量积是一种万有乘积,而矩阵乘法是一种具体化。

假设我们现在手里有很多矩阵,然后希望把两个矩阵乘起来。一开始我们也许想不到怎么乘,但是可以猜一些乘积的最基本的性质,比如说要和数乘是匹配的,也要和加法匹配也就是分配律。不管这个乘积是什么,都应当具备这些基本的性质。那么这个时候张量积就出现了,它代表了最广义的乘积,也是约束最弱的乘积,就仅仅满足上面说的那些基本性质。正因为是约束最弱的,所以一切具体的乘积都可以看成是从张量积的结果具体化得到的,也就是可以将其看成是万有乘积,或者是一个包络的乘积。

在数学中,张量积记为

张量积可以应用于不同的上下文中如向量、矩阵、张量、向量空间、代数、拓扑向量空间和模。在各种情况下这个符号的意义是同样的: 最一般的双线性运算。在某些上下文中也叫做外积。

例如:

有两个(或更多)张量积的分量的一般公式。例如,如果 U 和 V 是秩分别为 n 和 m 的两个协变张量,则它们的张量积的分量给出为

所以两个张量的张量积的分量是每个张量的分量的普通积。

补充:对于向量的理解

向量可以表示什么?

比如,我们可以用一个平面的法向量代表这个平面;物理上可以用向量代表力等。看来,向量可以表示很多东西,不过我们仔细看看发现向量也只表示了幅度(magnitude)与方向(direction)两个要素而已。

一个向量有很多种表示方式,我们可以用[0,

1]表示一个二维向量,也可以用平面、三维或更高维空间中的一条带箭头的线表示一个向量。我们都是知道(0, 0) —> (1,

1)可表示一个从(0, 0)到(1, 1)的有向线段(向量),那么,为什么可以用[0, 1]表示一个向量呢?

根据前面的讲解,我们知道一个向量就是空间中的一条有向线段,可以用一组坐标系的基和向量相应分量的乘积组合来表示。由于坐标系有很多种定义方式,基也就有很多种,对应的分量也会有很多种,但如果大家默认使用同一套基向量,那么基向量都不需要了,此时,想要表示一个向量,只要给定这三个分量即可,比如用0,

1表示一个向量,如果加上两个括号,这就是我们在书上经常看到的向量的列表示(0, 1),三维的有(1, 2, 1)。

当我们知道了TensorFlow其实是一个采用数据流图(data flow graphs),用于高维数据数值计算的开源软件库,我们就可以看看它能为我们解决什么问题了。

— — — — — — E N D — — — — — —

往期文章:

Numpy处理tick级别数据技巧

真正赚钱的期权策略曲线是这样的

多品种历史波动率计算

如何实现全市场自动盯盘

AI是怎样看懂研报的

真格量化策略debug秘籍

真格量化对接实盘交易

常见高频交易策略简介

如何用撤单函数改进套利成交

Deque提高处理队列效率

策略编程选Python还是C++

如何用Python继承机制节约代码量

十大机器学习算法

如何调用策略附件数据

如何使用智能单

如何扫描全市场跨月价差

如何筛选策略最适合的品种

活用订单类型规避频繁撤单风险

真格量化回测撮合机制简介

如何调用外部数据

如何处理回测与实盘差别

如何利用趋势必然终结获利

常见量化策略介绍

期权交易“七宗罪”

波动率交易介绍

推高波动率的因素

波动率的预测之道

趋势交易面临挑战

如何构建知识图谱

机器学习就是现代统计学

AI技术在金融行业的应用

如何避免模型过拟合

低延迟交易介绍

架构设计中的编程范式

交易所视角下的套利指令撮合

距离概念与特征识别

气象风险与天气衍生品

设计量化策略的七个“大坑”

云计算在金融行业的应用

机器学习模型评估方法

真格量化制作期权HV-IV价差

另类数据介绍

真格量化可访问:

https://quant.pobo.net.cn

真格量化微信公众号,长按关注:

遇到了技术问题?欢迎加入真格量化Python技术交流QQ群  726895887

相关文章

网友评论

    本文标题:TensorFlow中的Tensor是什么?

    本文链接:https://www.haomeiwen.com/subject/qeraxctx.html