1.3 TensorFlow的特点
TensorFlow能在这么短的时间内得到如此广泛的应用,主要得益于它自身的特点。
首先,TensorFlow 作为一个支持深度学习的计算框架,能够支持 Linux、Windows 等各种移动平台。
其次,TensorFlow本身提供了非常丰富的机器学习相关的API,是目前所有机器学习框架中提供API最齐全的。在TensorFlow中可实现基本的向量矩阵计算、各种优化算法、卷积神经网络、循环神经网络等,TensorFlow还提供了可视化的辅助工具和及时更新的最新算法库。
更重要的是,谷歌大力支持TensorFlow,同时开源世界众多贡献者为其添砖加瓦,使其得到飞速发展。
TensorFlow的特点主要表现在:
● 灵活性高
在TensorFlow中,只要把一个计算过程表示成数据流图即可实现计算。可以用计算图建立计算网络进行相关操作。用户可以基于TensorFlow编写自己的库,还可以编写底层的C++代码,并能自定义地将编写的功能添加到TensorFlow中。
● 可移植性强
TensorFlow有很强的可移植性,可以在台式计算机中的一个或多个CPU(或GPU)、服务器、移动设备等上运行。
● 自动求微分
TensorFlow有强大的自动求微分能力。TensorFlow用户只需要定义预测模型的结构,将结构和目标函数结合在一起、添加数据,即可利用TensorFlow自动计算相关的微分导数。● 支持多语言
TensorFlow支持多种语言,如Python、C++、Java、Go语言,它可以直接采用Python来构建和执行计算图,还可以采用交互式的IPython语言执行TensorFlow程序。
● 开源项目丰富
TensorFlow在GitHub上的主项目下包含了许多应用领域的最新研究算法的代码实现,如自然语言某些处理领域达到人类专家水平的syntaxnet项目等。TensorFlow的使用者可以方便地借鉴这些已有的高质量项目快速构建自己的机器学习应用。
● 算法库丰富
TensorFlow的算法库是开源机器学习框架中最齐全的,而且还可以不断地添加新的算法库。这些算法库基本上满足了使用者大部分的需要。
● 性能最优化
由于给予了线程、队列、异步操作等最佳的支持,TensorFlow可以将用户手边硬件的计算潜能全部发挥出来。用户可以自由地将 TensorFlow 图中的计算元素分配到不同设备上,TensorFlow可以帮我们管理好这些不同副本。
● 科研和产品相结合
谷歌的科学家用 TensorFlow 尝试新的算法,产品团队则用 TensorFlow 来训练和使用计算模型,并直接提供给在线用户。TensorFlow可以让应用型研究者将想法迅速运用到产品中,还可以让学术型研究者更直接地彼此分享代码,从而提高科研产出率。