社会焦点

你真的懂TensorFlow吗?为什么会Flow?

字号+ 作者: 来源: 2017-05-23

你真的懂TensorFlow吗?为什么会Flow?,惯性张量,纯净水桶,我的世界水桶服,二阶张量,张量积

你真的懂TensorFlow吗?为什么会Flow?

  大数据文摘作品,转载要求见文末

  编译 | 邵胖胖,江凡,笪洁琼,Aileen

  也许你已经下载了TensorFlow,而且准备开始着手研究深度学习。但是你会疑惑:TensorFlow里面的Tensor,也就是“张量”,到底是个什么鬼?也许你查阅了维基百科,而且现在变得更加困惑。也许你在NASA教程中看到它,仍然不知道它在说些什么?问题在于大多数讲述张量的指南,都假设你已经掌握他们描述数学的所有术语。

  别担心!

  我像小孩子一样讨厌数学,所以如果我能明白,你也可以!我们只需要用简单的措辞来解释这一切。所以,张量(Tensor)是什么,而且为什么会流动(Flow)?

  目录

  • 0维张量/标量

      标量是一个数字

  • 1维张量/向量

      1维张量称为“向量”。

  • 2维张量

      2维张量称为矩阵

  • 3维张量

  • 公用数据存储在张量

  • 时间序列数据

  • 股价

  • 文本数据

  • 图片

  • 彩色图片

  • 5D张量

  • 结论

  •   让我们先来看看tensor(张量)是什么?

      张量=容器

      张量是现代机器学习的基础。它的核心是一个数据容器,多数情况下,它包含数字,有时候它也包含字符串,但这种情况比较少。因此把它想象成一个数字的水桶。

      张量有多种形式,首先让我们来看最基本的形式,你会在深度学习中偶然遇到,它们在0维到5维之间。我们可以把张量的各种类型看作这样(对被题目中的猫咪吸引进来小伙伴说一句,不要急!猫咪在后面会出现哦!):

      0维张量/标量

      装在张量/容器水桶中的每个数字称为“标量”。

      标量是一个数字。

      你会问为什么不干脆叫它们一个数字呢?

      我不知道,也许数学家只是喜欢听起来酷?标量听起来确实比数字酷。

      实际上,你可以使用一个数字的张量,我们称为0维张量,也就是一个只有0维的张量。它仅仅只是带有一个数字的水桶。想象水桶里只有一滴水,那就是一个0维张量。

      本教程中,我将使用Python,Keras,TensorFlow和Python库Numpy。在Python中,张量通常存储在Nunpy数组,Numpy是在大部分的AI框架中,一个使用频率非常高的用于科学计算的数据包。

    你真的懂TensorFlow吗?为什么会Flow?

      你将在Kaggle(数据科学竞赛网站)上经常看到Jupyter Notebooks(安装见文末阅读链接,“数学烂也要学AI:带你造一个经济试用版AI终极必杀器”)关于把数据转变成Numpy数组。Jupyter notebooks本质上是由工作代码标记嵌入。可以认为它把解释和程序融为一体。

      我们为什么想把数据转换为Numpy数组?

      很简单。因为我们需要把所有的输入数据,如字符串文本,图像,股票价格,或者视频,转变为一个统一得标准,以便能够容易的处理。

      这样我们把数据转变成数字的水桶,我们就能用TensorFlow处理。

      它仅仅是组织数据成为可用的格式。在网页程序中,你也许通过XML表示,所以你可以定义它们的特征并快速操作。同样,在深度学习中,我们使用张量水桶作为基本的乐高积木。

      1维张量/向量

      如果你是名程序员,那么你已经了解,类似于1维张量:数组。

      每个编程语言都有数组,它只是单列或者单行的一组数据块。在深度学习中称为1维张量。张量是根据一共具有多少坐标轴来定义。1维张量只有一个坐标轴。

      1维张量称为“向量”。

      我们可以把向量视为一个单列或者单行的数字。

    你真的懂TensorFlow吗?为什么会Flow?

      如果想在Numpy得出此结果,按照如下方法:

    你真的懂TensorFlow吗?为什么会Flow?

      我们可以通过NumPy’s ndim函数,查看张量具有多个坐标轴。我们可以尝试1维张量。

    你真的懂TensorFlow吗?为什么会Flow?

      2维张量

      你可能已经知道了另一种形式的张量,矩阵——2维张量称为矩阵

    你真的懂TensorFlow吗?为什么会Flow?

      不,这不是基努·里维斯(Keanu Reeves)的电影《黑客帝国》,想象一个excel表格。

      我们可以把它看作为一个带有行和列的数字网格。

      这个行和列表示两个坐标轴,一个矩阵是二维张量,意思是有两维,也就是有两个坐标轴的张量。

      在Numpy中,我们可以如下表示:

      x = np.array([[5,10,15,30,25],

      [20,30,65,70,90],

      [7,80,95,20,30]])

      我们可以把人的特征存储在一个二维张量。有一个典型的例子是邮件列表。

      比如我们有10000人,我们有每个人的如下特性和特征:

  • First Name(名)

  • Last Name(姓)

  • Street Address(街道地址)

  • City(城市)

  • State(州/省)

  • Country(国家)

  • Zip(邮政编码)

  •   这意味着我们有10000人的七个特征。

      张量具有“形状”,它的形状是一个水桶,即装着我们的数据也定义了张量的最大尺寸。我们可以把所有人的数据放进二维张量中,它是(10000,7)。

      你也许想说它有10000列,7行。

      不。

      张量能够被转换和操作,从而使列变为行或者行变为列。

      3维张量

      这时张量真正开始变得有用,我们经常需要把一系列的二维张量存储在水桶中,这就形成了3维张量。

      在NumPy中,我们可以表示如下:

    转载请注明出处。


    1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

    相关文章