本日志标题:张量和深度学习        [2017-12-13] Bookmark and Share

一、位图和矢量图

前一段时间《银翼杀手2049》上映火爆,于是把1982版的《银翼杀手》搬出来看看。



其中有个镜头很有印象:哈里森·福特扮演的杀手把一张照片插入碟形机器,机器开始读取照片,然后按照杀手语言要求要求进行左移、右移、放大,最终放大n倍查看到细节,为杀手找到了追查线索。

影片中对照片扫描并显示放大的技术没什么问题,关键是图片放大的N倍还能看到清晰细节这事就和现实有些出入了。当然作为科幻片,尤其是一部1982年的科幻片,照片采集获取全息数据也说得过去,就另当别论了。

那么为什么说现实中图片放大了就不能查看更清晰的细节呢?因为照片及采集照片得出的就只是位图。

1、位图图像

位图图像,亦称为点阵图像或绘制图像,是由称作像素(图片元素)的单个点组成的。这些点可以进行不同的排列和染色以构成图样。当放大位图时,可以看见赖以构成整个图像的无数单个方块。

很简单的一个例子,网络上任意下载的jpg图片,通过图片浏览器进行放大观看,最终某个局部看起来就是“马赛克”形状,这就是位图的点阵被放大的效果。





2、矢量图像

矢量图,也称为面向对象的图像或绘图图像,在数学上定义为一系列由线连接的点。矢量文件中的图形元素称为对象。每个对象都是一个自成一体的实体,它具有颜色、形状、轮廓、大小和屏幕位置等属性。

矢量图是根据几何特性来绘制图形,矢量可以是一个点或一条线,矢量图只能靠软件生成,文件占用内在空间较小,因为这种类型的图像文件包含独立的分离图像,可以自由无限制的重新组合。它的特点是放大后图像不会失真,和分辨率无关,适用于图形设计、文字设计和一些标志设计、版式设计等。

矢量图可以在维持它原有清晰度和弯曲度的同时,多次移动和改变它的属性,而不会影响图例中的其它对象。这些特征使基于矢量的程序特别适用于图例和三维建模,因为它们通常要求能创建和操作单个对象。基于矢量的绘图同分辨率无关。


二、标量、矢量、张量

1、标量(scalar),亦称“无向量”。

有些物理量,只具有数值大小,而没有方向,部分有正负之分。物理学中,标量(或作纯量)指在坐标变换下保持不变的物理量。用通俗的说法,标量是只有大小,没有方向的量。

如质量、密度、温度、功、能量、路程、速率、体积、时间、热量、电阻、功率、势能、引力势能、电势能等物理量。无论选取什么坐标系,标量的数值恒保持不变。


2、矢量(vector)是一种既有大小又有方向的量,又称为向量。

一般来说,在物理学中的位移、速度、力、动量、磁矩、电流密度等就是这样的量。舍弃实际含义,就抽象为数学中的概念──向量。在计算机中,矢量图可以无限放大永不变形。


3、张量

张量概念是矢量概念的推广,矢量是一阶张量。张量是一个可用来表示在一些矢量、标量和其他张量之间的线性关系的多线性函数。

在同构的意义下,
第零阶张量 (r = 0) 为标量 (Scalar)。
类似单一数,比如说250这样的自然数。也可以是实数。下同。

第一阶张量 (r = 1) 为向量 (Vector)。
类似数组,比如 {a1,a2,a3......an}。这里a1,a2...的值都是Scalar。

第二阶张量 (r = 2) 则成为矩阵 (Matrix)。

第三阶或r阶张量可以理解为“分量数组”。





在数学里,张量是一种几何实体,或者说广义上的“数量”。张量概念包括标量、向量和线性算子。张量可以用坐标系统来表达,记作标量的数组,但它是定义为“不依赖于参照系的选择的”。


三、张量和深度学习

张量是所有深度学习框架中最核心的组件,因为后续的所有运算和优化算法都是基于张量进行的。

举例来说,我们可以将任意一张RGB彩色图片表示成一个三阶张量(三个维度分别是图片的高度、宽度和色彩数据)。

如下图所示是一张普通的水果图片,按照RGB三原色表示,其可以拆分为三张红色、绿色和蓝色的灰度图片,如果将这种表示方法用张量的形式写出来,就是图中最下方的那张表格。





图中只显示了前5行、320列的数据,每个方格代表一个像素点,其中的数据[1.0, 1.0, 1.0]即为颜色。假设用[1.0, 0, 0]表示红色,[0, 1.0, 0]表示绿色,[0, 0, 1.0]表示蓝色,那么如图所示,前面5行的数据则全是白色。

将这一定义进行扩展,我们也可以用四阶张量表示一个包含多张图片的数据集,其中的四个维度分别是:图片在数据集中的编号,图片高度、宽度,以及色彩数据。

将各种各样的数据抽象成张量表示,然后再输入神经网络模型进行后续处理是一种非常必要且高效的策略。

因为如果没有这一步骤,我们就需要根据各种不同类型的数据组织形式定义各种不同类型的数据操作,这会浪费大量的开发者精力。

更关键的是,当数据处理完成后,我们还可以方便地将张量再转换回想要的格式。例如Python NumPy包中numpy.imread和numpy.imsave两个方法,分别用来将图片转换成张量对象(即代码中的Tensor对象),和将张量再转换成图片保存起来。

所以,张量作为一个深度学习的基本概念项,在数据导入、后期数据处理方面的作用是基石性重要的。



参考:
深度学习框架太抽象?其实不外乎这五大核心组件
https://www.leiphone.com/news/201701/DZeAwe2qgx8JhbU8.html

知乎:什么是张量?
https://www.zhihu.com/question/20695804/answer/159192844




在百度搜索完整的张量和深度学习内容,或者用Google搜索相关的更多内容

By [cnbruce] at 10:56:14 | 评论 [0] | 浏览 [188] | TrackBack| 返回顶部

About Comments
此篇日志暂时没有相关的说明和评论。:)


Post a Comment
呢称: 验证码: 
禁止笑脸转换 禁止UBB | 缩放输入框:6 5 | [Ctrl+Enter提交](1000个字符限制)