简介

TensorFlow是Google开源的一款人工智能学习系统。为什么叫这个名字呢?Tensor的意思是张量,代表N维数组;Flow的意思是流,代表基于数据流图的计算。把N维数字从流图的一端流动到另一端的过程,就是人工智能神经网络进行分析和处理的过程。

关于TensorFlow是采用数据流图(data flow graphs),用于数值计算的开源软件库。

节点Nodes在图中标示数学操作,图中的线edges则标示在节点间相互联系的多维数组,即张量tensor.

它灵活的架构让你可以在多种平台上展开计算,例如台式计算机中的一个或多个CPU(或GPU)、服务器、移动设备等等。

什么是数据流图(Data Flow Graph)?

数据流图用“结点(nodes)”和线(edges)的有向图来描述计算系统。

节点一般用来标示施加的数学操作,但也可以标示数据输入(feed in)的起点/输出(push out)的终点,或者是读取/写入持久变量(persistent variable)的重点。

线标示节点之间的输入/输出关系。

这些数据线可以输运“size 可动态调整” 的多维数据数组,即“张量”。张量从图中流动的直观图像是这个工具取名tensorflow的原因。一旦输入端的所有张量注备好,节点将被分配到各个计算设备完成异步并行地执行运算。

高度的灵活性

TensorFlow不是一个严格的“神经网络”库。只要你可以将你的计算表示为一个数据流图,你就可以使用TensorFlow.

你来构建图,描述驱动计算的内部循环。我们提供了游泳池的工具来帮助你组装“子图”(常用语神经网络),当然用户也可以在Tensorflow基础上写自己的“上层库”。定义顺手好用的新复合操作和写一个python函数一样容易,而且也不用担心性能损耗。当然万一你发现找不到想要的底层数据操作,你也可以自己写一点C++代码来丰富底层操作。

真正的可移植性(Portability)

将科研和产品联系在一起

自动求微分

基于梯度的机器学习算法会受益于Tensorflow自动求微分的能力。作为Tensorflow用户,你只需要定义预测模型的结构,将这个结构和目标函数(objective function)结合在一起,并添加数据,Tensorflow将自动为你计算相关的微分导数。计算某个变量相对于其它变量的导数仅仅是通过扩展的图来完成的,所以你能一直清楚看到的究竟在发生什么。

多语言支持

性能最优化

比如说你有一个32歌CPU内核、4个GPU显卡的工作站,想要将你工作站的计算潜能全发挥出来?由于Tensorflow给予线程、队列、异步操作等以最佳的支持,Tensorflow让你可以将你手边硬件的计算潜能全部发挥出来。你可以自由地将Tensorflow图中的计算元素分配到不同设备上,Tensorflow可以帮你管理好这些不同的副本。

Data Flow Graph

简介

发表评论

电子邮件地址不会被公开。 必填项已用*标注

滚动到顶部