TensorFlow是Google开源的基于数据流图的机器学习框架[1],支持Python和C++程序开发语言。轰动一时的AlphaGo就是使用tensorflow进行训练的,其命名基于工作原理,tensor 意为张量(即多维数组),flow 意为流动。即多维数组从数据流图一端流动到另一端。目前该框架支持 Windows、Linux、Mac乃至移动手机端等多种平台。
TensorFlow 翻译过来是“张量流动”,这非常准确地表达了它的基本原理,就是根据深度学习模型架构构建一个有向图,让数据以张量的形式在其中流动起来。
这里的张量(Tensor)其实是指向量的高维扩展,比如向量可以看作是张量的一维形式,矩阵可以看作张量在二维空间上的特例。在深度学习模型中,大部分数据是以矩阵甚至更高维的张量表达的,为了让这些张量数据流动起来,每一个深度学习模型需要根据模型结构建立一个由点和边组成的有向图,图里面的点代表着某种操作,比如某个激活函数、某种矩阵运算等等,而边就定义了张量流动的方向。
下图为其数据流动示意图。
TensorFlow的安装与示例:TensorFlow入门
Keras是基于TensorFlow和Theano(由加拿大蒙特利尔大学开发的机器学习框架)的深度学习库,是由纯python编写而成的高层神经网络API,也仅支持python开发。它是为了支持快速实践而对tensorflow或者Theano的再次封装,让我们可以不用关注过多的底层细节,能够把想法快速转换为结果。Keras默认的后端为tensorflow,如果想要使用theano可以自行更改。tensorflow和theano都可以使用GPU进行硬件加速,往往可以比CPU运算快很多倍。因此如果你的显卡支持cuda的话,建议尽可能利用cuda加速模型训练。