3.1 TensorFlow概念解读
由于深度学习研究的最终目的是为了解决我们现实世界中遇到的困难,因此在学术界不断探索新理念、新模型的同时,业界优秀的从业人员也在加速发布各类可实现的技术框架,这样深度学习框架就在学术界和工业界的相互推动下得以迅速发展起来。这里给出谷歌公司经过长期的研究和尝试,在实践的基础上推出的目前最优秀的深度学习框架之一——TensorFlow。TensorFlow最初是由谷歌公司的大脑小组(隶属于谷歌机器智能研究机构)的研究员和工程师们开发出来的,是一个采用数据流图(Data Flow Graph)的开源分布式数值计算框架,主要用于减轻实现神经网络细节层面的工作量(例如,计算神经网络权重值的导数)。TensorFlow通过使用统一计算设备架构(Compute Unified Device Architecture,CUDA)对数值进行有效计算,该架构是由NVIDIA公司引入的并行计算平台。
TensorFlow主要是由计算图、张量以及模型会话三个部分组成的。TensorFlow中的计算可以表示为一个计算图(Computation Graph),或者称作有向图(Directed Graph),图中的每一个数学运算或操作(Operation)都将被视为一个节点(Node),而节点与节点之间的连接被称为边(Edge),图中的这些边(Edge)则表示在节点间相互关联的流动(Flow)的多维数据数组,即张量(Tensor)。这个计算图表述了数据的计算流程,它负责维护和更新状态,我们可以对计算图中的分支进行条件控制或循环操作。简单说,我们可以用张量表示数据,用计算图搭建神经网络,用会话执行计算图,在优化线上的权重值(参数)后得到我们的模型。
这里,我们还可以使用多种语言对计算图进行设计。TensorFlow这样灵活的架构让我们可以在多种平台上展开计算,例如台式计算机中的一个或多个CPU(或GPU)、服务器、移动设备等。作为优秀的技术架构,TensorFlow在机器学习方面解决了以下几个核心问题:
(1)使用TensorFlow工具可以利用很简洁的语言来实现各类复杂算法模型,这样一来,我们就可以从日常中极为消耗精力的编码、调试工作中解放出来。
(2)由于TensorFlow内核执行系统使用的是C++,因此在执行效率方面非常高效。
(3)TensorFlow极佳的分层架构使得模型能够很方便地运行在异构设备之上。
(4)TensorFlow包含了TensorBoard等极好的配套工具,且第三方社区也在不断贡献很多实用的辅助工具,例如TFLearn等,这些工具使得代码变得更加简洁、数据处理工作更便捷。
如果读者感兴趣,可以参考下面的网址以查阅关于TensorFlow方面的内容。
- TensorFlow官网:tensorflow.google.cn。
- TensorFlow的应用程序编程接口(API):tensorflow.google.cn/api_docs/python。
- GitHub网址:github.com/tensorflow。
- 模型仓库:github.com/tensorflow/models。