前言
最近在乌镇举办的人工智能峰会上,AlphaGo 2.0作为一代的升级版,和现世界排名第一的柯洁进行了三局厮杀,且不说结果如何,人工智能,尤其是深度学习领域已经在悄然间走进了我们的视野之中。AlphaGo一路连克世界冠军井山裕太、朴廷桓、李世石以及柯洁等众多高手,一时间成为大家茶余饭后的话题。作为支撑AlphaGo复杂训练任务的深度学习框架tensorflow,和其他深度学习框架如caffe、CNTK等相比有什么优势?怎么样才能对它有大体的认识和了解呢?希望通过这篇文章,能够让你对上面的问题有了比较全面的了解。
tensorflow框架简介
为了巩固自身在深度学习领域的地位,gogole在2015年年底开源了内部机器学习框架DistBeilef,在相继发布了分布式版本和1.0版本后,短短一年半时间里,tensorflow在github上的star已经逼近6w,将其他的老牌深度学习框架远远甩在自己的身后,成为当下最流行的深度学习项目。不仅在图像领域,甚至是强化学习、自然语言处理等场景,tensorflow都有丰富的应用场景。
tensorflow后端采用更高效的C++、CUDA编写,前端提供python、c++、go以及java等多种开发语言。它可以在众多的异构平台上方便的移植,比如android、ios、cpu服务器以及gpu集群。除了提供常见的深度学习算法,如cnn、rnn外,tensorflow还实现了常见的机器学习算法,如线性回归、随机森林等。
tensorflow编程模型简介
构建图
我们可以使用一个有向图(或称计算图)来形象刻画每个tensorflow程序的计算过程,而代表不同含义的节点和有向边构成了这个或复杂或简单的图。计算图中的节点有两种形式,一种是运算操作,一种是表示变量。有向边可以看做是节点之间的关系。计算图中的每个节点可以有多个输入和输出,每个节点表示了一种运算操作,节点可以算是运算操作的实例化。由于计算图中的边流动(flow)的数据被称为张量(tensor),所以计算图也被称为tensorflow。
对于一个计算图来说,需要数据(tensor),运算操作(operation)以及边来刻画计算的过程,下面我们结合一个简单的例子来说明如何执行tensorflow的计算过程。