张量tensor
几何代数中定义的张量是基于向量和矩阵的推广,通俗一点理解的话,我们可以将标量视为零阶张量,矢量视为一阶张量,那么矩阵就是二阶张量。
那TensorFlow里面的张量(Tensor)是什么,流动(Flow)是什么?
是什么?
本教程中,我将使用Python,Keras,TensorFlow和Python库Numpy。在Python中,张量通常存储在Numpy数组,Numpy是在大部分的AI框架中,一个使用频率非常高的用于科学计算的数据包。
我们为什么想把数据转换为Numpy数组?很简单。因为我们需要把所有的输入数据,如字符串文本,图像,股票价格,或者视频,转变为一个统一得标准,以便能够容易的处理。
张量是现代机器学习的基础。它的核心是一个数据容器,多数情况下,它包含数字,有时候它也包含字符串,但这种情况比较少。
它仅仅是组织数据成为可用的格式。比如:在网页程序中,你也许通过XML表示,所以可以定义它们的特征并快速操作。
0维张量/标量 标量是一个数字
1维张量/向量 1维张量称为“向量”。
2维张量 2维张量称为矩阵
3维张量 公用数据存储在张量 时间序列数据 股价 文本数据 彩色图片(RGB)
这里有一些存储在各种类型张量的公用数据集类型:
3维=时间序列
4维=图像
5维=视频
几乎所有的这些张量的共同之处是样本量。样本量是集合中元素的数量,它可以是一些图像,一些视频,一些文件或者一些推特。
#例如,一个图像可以用三个字段表示
(width, height, color_depth) = 3D
#我们可能有10,000张郁金香的图片,这意味着,我们将用到4D张量
(sample_size, width, height, color_depth) = 4D
#医学扫描——我们可以将脑电波(EEG)信号编码成3D张量,因为它可以由这三个参数来描述:
(time, frequency, channel)
#如果我们有多个病人的脑电波扫描图,那就形成了一个4D张量
(sample_size, time, frequency, channel)
#MNIST数据集有60,000张图片,它们都是28 x 28像素,它们的颜色深度为1,即只有灰度。
#TensorFlow这样存储图片数据:
(sample_size, height, width, color_depth)
#于是我们可以认为,MNIST数据集的4D张量是这样的:
(60000,28,28,1)
#5D张量可以用来存储视频数据。TensorFlow中,视频数据将如此编码:
#(sample_size, frames, width, height, color_depth)
#如果我们考察一段5分钟(300秒),1080pHD(1920 x 1080像素),每秒15帧(总共4500帧),颜色深度为3的视频,我们可以用4D张量来存储它
(4500,1920,1080,3)
#当我们有多段视频的时候,张量中的第五个维度将被使用。如果我们有10段这样的视频,我们将得到一个5D张量:
(10,4500,1920,1080,3)
流动(Flow)是什么?
学习如何在张量上做各种变换,这就是大家所熟知的数学。换句话说,我们将让张量“流动Flow起来”。