深度学习之路1-tensorflow

安装

  推荐使用豆瓣镜像安装--速度快,可安装性强:pip install tensorflow -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com

  国内其他源推荐:

清华:https://pypi.tuna.tsinghua.edu.cn/simple

 

阿里云:http://mirrors.aliyun.com/pypi/simple/

 

中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/

 

华中理工大学:http://pypi.hustunique.com/

 

山东理工大学:http://pypi.sdutlinux.org/

 

豆瓣:http://pypi.douban.com/simple/

介绍

Tensorflow是广泛使用的实现机器学习以及其它涉及大量数学运算的算法库之一。Tensorflow由Google开发,是GitHub上最受欢迎的机器学习库之一。Google几乎在所有应用程序中都使用Tensorflow来实现机器学习。 例如,如果您使用到了Google照片或Google语音搜索,那么您就间接使用了Tensorflow模型。它们在大型Google硬件集群上工作,在感知任务方面功能强大。

张量(Tensor)

 

 上图显示了一些简化的张量。随着维度的不断增加,数据表示将变得越来越复杂。例如,一个3x3的张量,我可以简单地称它为3行和列的矩阵。如果我选择另一个形式的张量(1000x3x3),我可以称之为一个向量或一组1000个3x3的矩阵。在这里我们将(1000x3x3)称为张量的形状或尺寸。张量可以是常数也可以是变量。

计算图(流, flow)

 

 

计算图具有以下属性:

  • 叶子顶点或起始顶点始终是张量。意即,操作永远不会发生在图的开头,由此我们可以推断图中的每个操作都应该接受一个张量并产生一个新的张量。同样,张量不能作为非叶子节点出现,这意味着它们应始终作为输入提供给操作/节点。

  • 计算图总是以层次顺序表达复杂的操作。通过将a + b表示为c,将b + 1表示为d,可以分层次组织上述表达式。 因此,我们可以将e写为:

e = (c)x(d) 这里 c = a+b 且 d = b+1.

 

  • 以反序遍历图形而形成子表达式,这些子表达式组合起来形成最终表达式。

  • 当我们正向遍历时,遇到的顶点总是成为下一个顶点的依赖关系,例如没有a和b就无法获得c,同样的,如果不解决c和d则无法获得e。

  • 同级节点的操作彼此独立,这是计算图的重要属性之一。当我们按照图中所示的方式构造一个图时,很自然的是,在同一级中的节点,例如c和d,彼此独立,这意味着没有必要在计算d之前计算c。 因此它们可以并行执行。

执行过程

Tensorflow允许用户使用并行计算设备更快地执行操作。计算的节点或操作自动调度进行并行计算。这一切都发生在内部,例如在上图中,可以在CPU上调度操作c,在GPU上调度操作d。下图展示了两种分布式执行的过程:

 

 

子执行过程

 

 

在worker之间交换数据

 

 此处张量从设备A传递到设备B。这在分布式系统中引起了一些性能延迟。延迟取决于一个重要属性:张量大小。设备B处于空闲模式,直到它接收到设备A的输入。

压缩

假设一个形状为(1000,440,440,3)的张量,其包含的值的数量为1000 * 440 * 440 * 3。如果数据类型是32位,那么占用的空间是这个巨大数字的32倍,从而增加了流的延迟。压缩技术可以用来减小尺寸。

Tensorflow会自动将32位浮点数转换为16位表示,忽略所有可忽略的数字。如果它是64位数,则会将其大小减少近一半。如果将64位数压缩到16位将几乎缩小75%。因此张量所占用的空间可以尽可能减少。

一旦张量到达节点,16位表示可以通过追加0回到它的原始形式。因此,32或64位表示将在到达节点进行处理后被还原。

 

posted @ 2020-04-06 15:45  txy的博客  阅读(130)  评论(0)    收藏  举报