3.3 TensorFlow 机器学习系统。
TensorFlow[26]是 Google 公司于最近开源的一个机器学习系统,使用数据流图表示运算过程,数据流图中的节点用于表示各个数学运算,图的两端表示输入和输出的多维数据,其中各个节点称为 Tensor.通过使用 Tensor 表示运算的架构十分灵活,也使得 TensorFlow 可以使用同一个 API 去调用同一台计算机的各个CPU 或 GPU,或者调用各个服务器,移动设备等。TensorFlow 最开始是由 GoogleBrain 团队的工程师开发的,希望能够用于机器学习和深度神经网络计算,在实现之后发现 TensorFlow 对于机器学习的其它许多相关领域也有很好的适应性。
数据流图主要是描述一些输入边缘通过数学运算节点得到相应输出边缘的流程。节点通常都是用于描述某种数学运算,有时也可以用于存放输入的数据,输出的结果数据或者运算过程中的变量。边缘用于描述输入输出数据和节点之间的关系,这些边缘通常都是由一些大小可变的多维数据组成。TensorFlow 这个名字就是来源于这种通过数据在 Tensor 之间流动完成计算的计算方式。
在完成对 TensorFlow 数据流图的设计之后,只要节点需要的数据边缘已经到位,相应节点的运算可以并行地进行。一个简单的 TensorFlow .
TensorFlow 由于其良好的设计和突出的高效率,加上 Google 公司在机器学习方面的影响边,TensorFlow 刚开源没多久,很快就得到了很多公司与开发者的响应。TensorFlow 主要有以下几个特点:
1. 良好的灵活性,TensorFlow 不仅是一个神经网络系统,通过数据流图中节点的使用,完全可以通过 TensorFlow 完成其它各种的运算。而且在需要快速开发时,可能使用Python进行高抽象的编程,在有高性能需要时,可以使用 C++编写一个新的节点,完成计算。
2. 可移植性,TensorFlow 可以运行在 CPU 或者 GPU 上,并且不关心是个人电脑,服务器还是移动设备,TensorFlow 可以简单地在一台个人电脑上运行,也可以部署到云服务器上进行高性能运算。
3. 研究与生产的普适性,由于高度抽象的设计,使得在使用 TensorFlow 在研究时,可以很快地对完成研究工作,而由于良好的性能,无需做过多的个性就可以把 TensorFlow 程序部署到生产线上。
4. 自动计算,TensorFlow 提供了诸多自动化计算,在使用 TensorFlow 时,仅需要提供目标函数,输入数据,TensorFlow 会为你完成大部分运算。
5. 多语言支持,TensorFlow 提供了 Python 和 C++编程接口,可以任意选择一个语言进行编程,而且对于 Python 语言,TensorFlow 还提供了一套逻辑可视化的支持,在程序运行过程中,可以把一些结果使用图形输出。
6. 高性能,TensorFlow 从底层实现对线程,队列,和异步运算,因此TensorFlow 可以很简单地调用所有可用的硬件资源,通过把节点分配给不同的设备进行计算,TensorFlow 会自动地为用户实现并行化计算。
除了以上的特点之外,TensorFlow 还有一个最大的优点就是使用了 Apache2.0 开源许可证作为开源软件发布,这样无论是学生,研究员,还是开发者,在遵循 Apache 2.0 开源许可证的前提下,都可以随意地使用 TensorFlow 进行研究和开发工作。
Apache 2.0 许可证[27]是由 Apache 组织提出的协议,与 BSD 等开源许可证类似,它鼓励代码共享和尊重原作者的著作权,同时也允许代码修改,然后作为开源软件或者商业软件进行发布。虽然 TensorFlow 在各方面表现都很好,但是也有其不足的方面,最大的问题就是当前开源的仅为其单机版本,而 TensorFlow 分布式版还没有开源,TensorFlow 作为 Google 提出的一个关键性的机器学习系统,已经用在了 Gmail,Google Photos,Google 翻译等应用中,Google 还为其规划了长远的目标,相信在不远的将来,TensorFlow 还能够进一步地提升,也会加入分布式计算支持。
由于 TensorFlow 在各方面突出的表现,加上开源的优势,所以本系统选择了使用 TensorFlow 作为核心计算框架,通过使用 TensorFlow 完成神经网络训练与预测。
3.4 本章小结。
本章通过介绍机器学习的相关知识大致说明了机器学习的相关概念,然后详细说明了机器学习内人工神经网络的知识,其中介绍了人工神经网络的组成,激活函数,最优化算法等,为本文系统的实现进行了理论分析,介绍了算法的优势与选择的原因。最后通过对 TensorFlow 的介绍说明了本文系统所选用的机器学习核心系统。通过以上的介绍,已经完成对本文系统的所有理论知识分析。