深度学习扫盲贴张量分析tensorflow入门

Posted 江北的渔夫

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了深度学习扫盲贴张量分析tensorflow入门相关的知识,希望对你有一定的参考价值。

从下一篇文章开始,将讲述pytorch以及pycharm的配置,先来点硬核的,这个和设计有什么鬼的关系,以后会慢慢的体现出来;


人工智能的热门,TensorFlow最近被pytorch打的灰头土脸,也许你已经下载了TensorFlow,但是你会疑惑:TensorFlow里面的Tensor,也就是“张量”,到底是个什么鬼?也许你查阅了维基百科,然不知道它在说些什么?问题在于大多数讲述张量的指南,都假设你已经掌握他们描述数学的所有术语。


正因为有了欧拉,拉格朗日,傅里叶和斯托克斯,没人喜欢数学了,所以,张量(Tensor)是什么,咱们从零开始,Tensor为什么会流动(Flow)?


让我们先来看看tensor(张量)是什么?
tensor是tensorflow基础的一个概念,张量是现代机器学习的基础。它的核心是一个数据容器,多数情况下,它包含数字,有时候它也包含字符串,但这种情况比较少。因此把它想象成一个数字的水桶。

Tensorflow用到了数据流图,数据流图包括数据(Data)、流(Flow)、图(Graph)。Tensorflow里的数据用到的都是tensor,所以谷歌起名为tensorflow,怎么凡事都有他的份,量子计算机起名量子霸权,什么乱七八糟的名字。


来来来,看看这个图,我们一不小心就搞出了N维张量,和平行空间有点像:


【深度学习扫盲贴】张量分析tensorflow入门

Rank为0、1、2时分别称为标量、向量和矩阵,Rank为3时是3阶张量,Rank大于3时是N阶张量。这些标量、向量、矩阵和张量里每一个元素被称为tensor element(张量的元素),且同一个张量里元素的类型是保持一样的。



是不是类似于这样

【深度学习扫盲贴】张量分析tensorflow入门


高端的小伙伴还可以类似于这样?

【深度学习扫盲贴】张量分析tensorflow入门

敲黑板!划重点:


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


搞一个0维张量来了,这个叫做标量,装在张量容器水桶中的每个数字称为“标量”。标量是一个数字。同样还可以相对的向量,也叫做矢量,唉,高中物理化学和数学都关系起来了吧,是不是这样的感觉?

【深度学习扫盲贴】张量分析tensorflow入门


针对0维的张量,你会问为什么不干脆叫它们一个数字呢?我不知道,也许数学家只是喜欢听起来酷?标量听起来确实比数字酷。

【深度学习扫盲贴】张量分析tensorflow入门

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


鄙人表示,“数学烂也要学AI,学了AI来弥补自己数学不好的缺点;否则和人交谈没话可谈就不好了。


解析几何不好所以只能用三维软件做设计,没办法,CAD指令记不住就只能点按钮,唉,本意还是想做设计,带你造一个经济试用版AI终极必杀器”:Excel,在此狂笑三声,很多人excel也不会,于是只能用MATLAB了;

【深度学习扫盲贴】张量分析tensorflow入门

把所有的输入数据,如字符串文本,图像,股票价格,或者视频,转变为一个统一得标准,以便能够容易的处理。这样我们把数据转变成数字的水桶,我们就能用TensorFlow处理。


1维张量/向量,就是下面是也;

【深度学习扫盲贴】张量分析tensorflow入门

如果excel不会的,用matlab也凑活,是这样的:

【深度学习扫盲贴】张量分析tensorflow入门


1维张量只有一个坐标轴。1维张量称为“向量”。我们可以把向量视为一个单列或者单行的数字。是不是这样的了?


【深度学习扫盲贴】张量分析tensorflow入门


2维张量是什么鬼,看看黑客帝国来着吧?本人花了半天,特意调到了x和y;

【深度学习扫盲贴】张量分析tensorflow入门

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


这个时候可以展示一点高端技术了?比如这样?下面的代码是可以用的哦?

【深度学习扫盲贴】张量分析tensorflow入门


我们可以如下表示:

>> x=[1,2,3]
x =
1 2 3
>> y=[4,5,6]
y =
4 5 6
>> z=[7,8,9]
z =
7 8 9
>> plot3([x(1),y(1),z(1)],[x(2),y(2),z(2)],[x(2),y(2),z(2)])

唉,我们可以把人的特征存储在一个二维张量。有一个典型的例子是邮件列表。比如我们有10000人,我们有每个人的如下特性和特征:

 First Name(名)  Last Name(姓)  Street Address(街道地址)  City(城市)  State(州/省)  Country(国家)  Zip(邮政编码)

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


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

你也许想说它有10000列,7行。不。张量能够被转换和操作,从而使列变为行或者行变为列


矩阵的转置听说过没???

没有???

这样???

【深度学习扫盲贴】张量分析tensorflow入门


3维张量,你也许已经猜到它,但是一个3维张量是一个数字构成的立方体。

来一张骚气满满的图?

【深度学习扫盲贴】张量分析tensorflow入门

怎么搞起,excel貌似玩不转了?

其实还是可以的,就问你晕不晕。

【深度学习扫盲贴】张量分析tensorflow入门

【深度学习扫盲贴】张量分析tensorflow入门

实际上,3维张量最好视为一个立方体,有长宽高这样的。


于是******

【深度学习扫盲贴】张量分析tensorflow入门

3维=时间序列

4维=图像

5维=视频


如果我们下载了一百万篇川建国通知的推特(印象中他一周就能推这么多),我们就会用3D张量来存:

(number_of_tweets_captured, tweet, character)

这意味着,我们的川普推文集合看起来会是这样:

(1000000,140,128)


然后怎么搞4维


4D张量很适合用来存诸如JPEG这样的图片文件,RGB听过没,再上一个灰度。


来来来,上一个东西

打开你的PS或者你的Ai

这里有一个四维等着你呢;

五维?图片加上时间变成了一个小电影了……五维


结论:好了,现在你已经对张量和用张量如何对接不同类型数据有了更好的了解。


学习如何在张量上做各种变换,这就是大家所熟知的数学,傅里叶也拦不住了,用来遮挡你数学不好去吧。


以上是关于深度学习扫盲贴张量分析tensorflow入门的主要内容,如果未能解决你的问题,请参考以下文章

TensorFlow如何入门?

人工智能深度学习入门练习之(10)TensorFlow – 介绍

机器学习进阶笔记之一 | TensorFlow安装与入门

人工智能深度学习入门练习之(12)TensorFlow – 数学基础

TensorFlow入门必读教程,拿走不谢!

7种深度学习工具介绍