Deep Learning with Python第二章(翻译)6

当考虑到这样一批张量时,第一个轴叫做组的轴或者组的维度。在你学习Keras或者其他深度学习库的时候,这将是一个你经常遇到的术语。

2.2.8 数据张量的真实世界的例子

让我们用一些与你之后会遇到的例子相似的例子来使得数据张量更加的具体。你将熟知的那些数据几乎总是属于以下几类:

向量数据——2D张量模型(图片,特征)

时间序列的数据或者连续数据——3D张量模型(图片,时间步长,特征)

图片——4D张量模型(图片,高度,宽度,通道)或者(图片,通道,高度,宽度)

视频(图片,框架,高度,宽度,通道)或者(图片,框架,通道,高度,宽度)

2.2.9 向量数据

这是最常见的情况。在这个数据集中,任何单一数据点都能作为向量来编写,并且这个一批数据将作为2D张量来编写(这也就是说,一组向量),这也就是说第一个轴是图片轴,第二个轴是特征轴。

让我们看两个例子:

一组关于人们的真实数据集(这里我们考虑每个人的年龄,邮政编码和收入)。每个人能描述为3个值的向量,并且这样10万人的全部数据集可以存储在2D张量模型(100000,3)中。

一个文本文件数据集(这里我们通过记录每个词在一本包含了200000个常用词的字典里面出现的次数来表达每个文件。每个文件能作为包含20000个值的向量来编辑(字典中每个单词计一次数)),并且这样一个有着500个文件的数据集就能被储存在(500,20000)的张量模型里。

2.2.10 时间序列数据或者顺序数据

每当时间对你的数据很重要(或者是顺序的概念),它通过一个详细的时间轴来存储时间到3D张量中。每个图片能被作为连续的向量编写(一个2D张量),并且这样一群数据将被作为3D张量而编写。(见图2.3)

 

按照惯例,时间轴是第二个轴(索引为1的轴)。让我们看几个例子:

一组股票价格的数据集。每分钟,我们存储了当前的股票价格。这样每分钟将作为一个3D张量被编写,一整天的交易作为一个(390,3)的2D张量模型来编写(这里每天的交易时间为390分钟),并且250 天的价值数据就能被存储为一个(250,390,3)的3D张量模型。这里,每个图片是一天的价值数据。

一个tweet的数据集,这里我们将每个tweet作为一个在单词表中的128个unique字符中出现的连续的280个字符。在这个集合中,每个字符能作为128位的二进制向量来存储(一个除了一个对其对应的索引条目外的所有零向量)。然后每个tweet能够作为(280,128)的2D张量模型来编写,并且一个有着1百万tweet的数据集能被存储在(1000000,280,128)的张量模型中。

2.2.11 图像数据

图像通常有三个维度:高度,宽度,和颜色深度。虽然灰度图像(向我们的MNIST数字)有着仅一个单一的颜色通道而因此能被存入2D张量中,不过通常,图像是3D的,它们有着用于灰度图像的一维颜色通道。一群128灰度的256*258大小的图像能被因此存储在(128,256,256,3)的张量模型中,并且一群128颜色的图像能被存储在(128,256,256,3)的张量模型中(见图像2.4)。

这里有两个图像张量模型的习惯:最后一个通道习惯(TensorFlow中使用)和第一个通道的习惯(在Theano中使用)。谷歌的TensorFlow机器学习框架将颜色深度轴放在最后面:(图像,高度,宽度,颜色深度)。同时,Theano将颜色深度放在群轴的右边(图像,颜色深度,高度,宽度)。随着 Theano的习俗,先前的例子变成了(128,1,256,256)和(128,3,256,156)。Keras的框架给两个格式都提供了支持。

2.2.12 视频数据

视频数据是现实世界数据类型很少见的那种需要5D张量的数据类型。一个视频可以作为一些列的框架来理解,每个框架是一个有色图像。因为每个框架能被存储在3D张量中(高度,宽度,颜色深度),一系列框架能被存进4D张量中(框架,高度,宽度,颜色深度),和因此一一群不同的视频能被存储为5D张量模型(图片,框架,高度,宽度,颜色深度)。

例如,一个60秒144*256的YouTube视频被切片为每秒4个框架的图片,从而产生240个框架。这样一共有106168320个值!如果张量的dtype是float32类型,这样每个值需要32bit,所以张量被表达为406MB。太笨重了!每个你在真实世界看到的视频是那么的小,因为它们没被存储为float32,并且典型的,它们通过一个大的因素来压缩(例如用MPEG格式)

猜你喜欢

转载自www.cnblogs.com/zzheng-blog/p/10864095.html
今日推荐