《深度学习:主流框架和编程实战》——2TensorFlow深度学习框
第2章TensorFlow深度学习框
架构建方法与图像分类的实现
Google公司不仅是大数据和云计算的领导者,在机器学习和深度学习领域也有很好的实践和积累,其内部使用的深度学习框架TensorFlow使深度学习爱好者的学习门槛越来越低。TensorFlow作为一个用于机器智能的开源软件库,是目前深度学习的主流框架之一,广泛应用于学术界与工业界。TensorFlow自开源至今,相继推出了分布式版本、服务器框架、可视化Tensorboard以及不胜枚举的模型在该框架下的实现。
本章将对TensorFlow做详细的介绍,主要包括TensorFlow运作原理、模型构建和框架安装。之后,介绍该框架下具体网络的实现以及详细代码的解读。
2.1 TensorFlow概述
2015年11月9日,Google工程师发布人工智能系统TensorFlow并宣布开源,将此系统的参数公布给业界工程师、学者和具有编程能力的技术人员。Google工程师认为机器学习是未来新产品和新技术的一个关键部分,这个领域的研究是全球性、高速度的,但缺少一个通用型的工具。因此,TensorFlow应运而生。
2.1.1 TensorFlow的特点
TensorFlow是Google基于DistBelief研发的第二代人工智能学习系统,其命名来源于自身的运行原理。TensorFlow是一个采用数据流图(Data Flow Graph)、用于数值计算的开源软件库。数据流图用节点(Node)和线(Edge)的有向图来描述数学计算。节点一般用来表示施加的数学操作,但也可以表示数据输入(Feed In)的起点/输出(Push Out)的终点,或者是读取/写入持久变量(Persistent Variable)的终点。线表示节点之间的输入/输出关系。这些数据线可以传输大小可动态调整的多维数据数组,即张量(Tensor)。张量从图中流过的直观过程是这个工具取名为TensorFlow的原因。一旦输入端的所有张量准备好,节点将被分配到各种计算设备以完成异步操作,并行地执行运算。它灵活的架构让用户可以在多种平台上展开计算,如台式计算机中的一个或多个CPU(或GPU)、服务器、移动设备等。TensorFlow最初用于机器学习和深度神经网络方面的研究,由于系统的通用性使其也可广泛用于其他计算领域。
TensorFlow的特点如下:
1)高度的灵活性:TensorFlow不是一个严格的神经网络库。只要用户可以将计算表示为一个数据流图,就可以使用TensorFlow来构建图,描写驱动计算的内部循环。TensorFlow提供了有用的工具来帮助用户组装子图(常用于神经网络),用户也可以在TensorFlow的基础上编写自定义的上层库。定义顺手好用的新复合操作与写一个Python函数一样容易,而且也不用担心性能损耗。
2)真正的可移植性:TensorFlow既可以在CPU和GPU上运行,又可以运行于台式机、服务器、笔记本电脑等。TensorFlow还可以将训练好的模型作为产品的一部分用于手机App。TensorFlow同样可以将模型作为云端服务运行在自己的服务器上,或者运行于Docker容器。
3)科研与产品无缝对接:Google科学家利用TensorFlow尝试新的算法,其产品团队则用TensorFlow来训练和使用计算模型,并直接提供给在线用户。应用型研究者使用TensorFlow将想法迅速运用于产品中,其也可以让学术性研究者更直接地分享代码,从而提高科研产出率。
4)自动求微分:基于梯度的机器学习算法受益于TensorFlow自动求微分的能力。用户只需要定义预测模型的结构,将这个结构和目标函数(Objective Function)结合在一起并添加数据,TensorFlow将自动为用户计算相关的微分导数。
5)多语言支持:TensorFlow有一个合理的C++使用界面和一个易用的Python使用界面来构建和执行指定的“图”。用户可以直接写Python/C++程序,也可以用交互式的iPython界面来使用TensorFlow尝试新想法,它可以帮助用户将笔记、代码、可视化等有条理地归置好。此外TensorFlow还支持用户创造自己喜欢的语言界面,比如Go、Java、Lua、JavaScript或者是R语言。
6)性能最优化:由于TensorFlow对线程、队列、异步操作等给予了最佳支持,使其计算潜能得以有效发挥。TensorFlow可以将硬件的计算潜能全部发挥出来,可充分利用多CPU和多GPU。
- 点赞
- 收藏
- 关注作者
评论(0)