携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第29天,点击查看活动详情
TensorFlow是一个开源的软件库,也是谷歌Brain公司研发的第2代机器学习系统,可以应用于各种感知及语言理解任务,此系统于2015年11月开源。TensorFlow系统具有很好的适应性,被广泛应用于各类机器学习算法的编程实现,同时也被广泛应用于谷歌内部的产品开发和各领域的科学研究。
TensorFlow的系统结构
TF的系统结构如图2-1所示,从上到下可以分为应用层,接口层和核心层,每一个层次都有其相应的功能。具体功能描述如下:
第一层是应用层。这一层为用户提供了各种与机器学习有关的训练库、预测库和能够适应多种编程语言的编程环境,在某种程度上,这一层类似于web系统的前端。
第二层为接口层。为了方便被其他语言调用,这一层将TensorFlow的功能模块进行了封装。
第三层是核心层,它还可以被细分为设备层、网络层、数据操作层和图计算层,具体功能如下:
(1)设备层:主要包括TensorFlow在各种硬件设备上的应用与实现,支持CPU、GPU和Mobile等设备;支持各种硬件设备之间的计算命令的转换,为上层提供一个统一的接口,并且支持程序的跨平台运行。
(2)网络层:包含RPC和RDMA两种通讯协议,主要被用于在分布式计算中进行各种不同设备之间的数据传输和更新。
(3)数据操作层:以tensor作为处理对象,实现tensor的多种操作和计算;
(4)图计算层:包含了分布式计算图和本地计算图的实施,它的任务主要是创建、编译、优化和执行图。
TensorFlow优点及不足
TensorFlow能够在操作时产生对应的计算图表,从而达到自动求导的目的。自动求导,其重要意义是使逆向传播网络的计算与推导更加方便、直接。与此同时,谷歌的软件生态系统还能利用谷歌的大脑进行大量的运算,而TensorFlow被认为是谷歌深度学习的一个关键部分。
TensorFlow具有以下优势:
(1)能够进行计算图表抽象化
(2)为Python和C/C++提供了大量的深度学习API
(3)利用Tensor Board进行数据可视化
(4)对模型和数据并行的支持
(5)支持多种客户端语言下的安装运行
TensorFlow的不足之处是:
(1)与其它框架比较,速度较慢
(2)每次装载新的培训批次,都会在C/C++和Python之间来回切换,浪费了很多时间
(3)难以使用
(4)动态类型在大的软件工程中容易发生错误。