1.5.2 TensorFlow
TensorFlow是Google大脑推出的开源机器学习库,与Caffe一样,主要用作深度学习相关的任务。与Caffe相比,TensorFlow的安装简单很多,可以使用pip命令安装。
TensorFlow中的Tensor是张量,代表N维数组,与Caffe中的Blob类似;Flow即流,代表基于数据流图的计算。神经网络的运算过程就是数据从一层流动到下一层,TensorFlow更直接强调了这个过程。
TensorFlow最大的特点是计算图机制,即需要先定义好图,然后进行运算,所以所有的TensorFlow代码都包含以下两部分。第一部分,创建计算图。这是用于表示计算的数据流,实际上就是定义好一些操作,可以将它看作Caffe中的prototxt的定义过程。第二部分,运行会话,执行图中的运算,可以看作Caffe中的训练过程。只是TensorFlow的会话比Caffe灵活很多,由于是Python接口,取中间结果分析和调试非常方便。
TensorFlow也有内置的TF.Learn和TF.Slim等上层组件,可以帮助快速地设计新网络,并且兼容Scikit-learn estimator接口,可以方便地实现evaluate、grid search、cross validation等功能。同时TensorFlow不只局限于神经网络,其数据流图支持非常自由的算法表达,可以轻松实现深度学习以外的机器学习算法。
用户可以通过写内层循环代码控制计算图分支的计算,TensorFlow会自动将相关的分支转为子图并执行迭代运算。TensorFlow也可以将计算图中的各节点分配到不同的设备执行,充分利用硬件资源。定义新的节点只需要写一个Python函数,如果没有对应的底层运算核,那么可能需要写C++或者CUDA代码实现运算操作。