做者 | 弗拉德
来源 | 弗拉德(公众号:fulade_me)git
人工智能是计算机科学的一个分支,它企图了解智能的实质,并生产出一种新的能以人类智能类似的方式作出反应的智能机器,该领域的研究包括机器人、语言识别、图像识别、天然语言处理和专家系统等。人工智能从诞生以来,理论和技术日益成熟,应用领域也不断扩大,能够设想,将来人工智能带来的科技产品,将会是人类智慧的“容器”。人工智能能够对人的意识、思惟的信息过程的模拟。人工智能不是人的智能,但能像人那样思考、也可能超过人的智能。那让咱们来看一下都有哪些人工智能开发的框框。github
早在2007加拿大的蒙特利尔大学就开始了Theano的开发,它最初是为了用于学术研究而设计的。虽然出身于学术界,可是在过去很长一段时间里面,Theano都是深度学习开发与研究的行业标准。
Theano实际上是一个比较底层的库,它比较适合数值计算和优化。支持自动函数梯度计算,支持Python接口,而且集成了Numpy。它并不仅是专门用来作深度学习的,能够说Theano是Python的一个数值计算库。它也有缺点,就是不支持GPU和水平扩展。
因为TensorFlow在谷歌的支持下强势崛起,Theano能够说是日渐式微,这里面的有个标志性的事件就是Theano创始人之一Ian Goodfellow,他放弃了Theano转去Google开发TensorFlow。算法
Caffe是由就读于加州大学伯克利分校的中国籍博士生贾扬清在2013年建立的,是一个老牌框架。
贾扬清本科和硕士都是清华毕业,他对两个深度学习的框架都有贡献,一个是TensorFlow,他之前是在Google工做。在2016年贾扬清加入到Facebook,开始了Caffe框架的开发。
Caffe的全称是"Convolution Architecture For Feature Extraction",意思是能用于特征提取的卷积架构,它的设计初衷实际上是为了针对计算机视觉。缺点是灵活性不足的问题,为了作模型调整会用到C++和CUDA。
在2017年4月,Facebook发布了Caffe2,这标志着Caffe有了一个很大的发展。咱们能够把它看做是对Caffe更细粒度的重构,在实用的基础上增长了扩展性和灵活性。随着时间的发展,Facebook最后把Caffe2合并到了PyTorch上面了。apache
说PyTorch以前,咱们得先说一说Torch。Torch是一个非主流的深度学习框架,它是基于Lua语言的。而如今主流的深度学习框架使用的语言基本都是Python,因此用Torch就会显得很非主流。可是Facebook的人工智能研究所使用的就是Torch,Torch很是适用于卷积神经网络,同时它的灵活度也很高。
有一个特色就是:它是命令式的,支持动态模型。大多数的机器学习框架都是支持静态图模型,也就是说在进行调试时,咱们须要先把模型定义好,而后再进行运行和计算。而Torch它的灵活度更高,它能够在运行的过程当中更改图模型,这就叫作支持动态的图模型。在2017年初,Facebook在Torch的基础上,发布了一个全新的机器学习框架叫PyTorch。PyTorch能够说是Torch的Python版,增长了不少特性。
2018年4月Facebook宣布将Caffe2并入PyTorch,因此说Caffe2就以PyTorch的形式存在。编程
MXNet是亚马逊它支持的深度学习框架。MXNet尝试把两种模式无缝的结合起来,一种是在命令式编程上提供张量运算,一种是在声明式的编程支持符号表达式。这样用户就能够自由的混合来实现他们本身的想法。也就是说,它结合了静态定义计算图和动态定义计算图的优点。另外MXNet支持的语言种类也比较多,除了常见的想Python还有C++,关键的他对R语音也支持的很好,对Go也有支持。可是它的学习曲线会比较高。服务器
CNTK又名:Microsoft Cognitive Toolkit。在2016年的微软宣布在给github上开源CNTK(computational Network ToolKit)。CNTK对语音和图像支持特别好,语音识别和图像识别也比较快。它还有着更为强大的可扩展性,开发者可使用多台计算机去实现GPU的扩展,从而可以更加灵活地应对大规模的实验。固然它也支持支持C#语言。网络
Keras是一个高级封装的库,一样也很是的受欢迎。它能够跟Theano、CNTK、TensorFlow结合起来工做。它至关于架设在这些框架上的更高一层,由于更高一层,这使得它的使用很是的简单。Keras强调的就是极简主义,你只须要几行代码就能构建一个神经网络。一样它号称为支持快速实验而生,可以把你的想法的迅速转换成为结果。它的语法的也比较明细,文档的也提供的很是好。固然了,它也是支持Python的。架构
DJF4是一个基于JVM,聚焦行业应用,并且提供商业支持的分布式的深度学习框架。它的宗旨就是:在合理的时间里去解决各种涉及大量数据的问题。
从它的名字上不难看出,它实际上是 Deep Learning For Java 的缩写,它对Java的支持是它最大的特色。它对使用Java做为开发语言的开发者来讲很是友好,它能够与Hadoop和Spark很好的结合起来,也可使用任意数量的GPU或者CPU运行。框架
Chainer的是一个专门为高效研究和开发深度学习算法而设计的开源框架,它也是基于Python的深度学习框架。Chanier在"实时"使构件计算图,"边运行边定义"的方法使得构建深度学习网络的变得很灵活。也就是说,Chanier是支持动态图定义的。那这种方法可让用户在每次迭代的时候能够根据条件去更改计算图,也很容易使用标准的调试器和分析器来调试和重构。机器学习
PaddlePaddle是百度旗下的深度学习开源平台,它支持并行分布式深度学习。在2016年9月1日百度世界大会上,当时百度的首席科学家吴恩达宣布:百度的深度学习平台将对外开放,命名为PaddlePaddle。吴恩达认为PaddlePaddle比一个PaddleP要更容易让人记住,事实上也是,PaddlePaddle 比 Paddle更容易上口。百度的资深科学家,PaddlePaddle的研发负责人徐伟介绍:在PaddlePaddle的帮助下,深度学习模型的设计如同编写伪代码同样容易,工程师只须要关注模型的高层结构,而无需担忧任何琐碎的底层问题。
TensorFlowA machine learning platform for everyone to solve real problems。对每一个人来解决现实问题的机器学习平台,这也是TensorFlow存在的宗旨。它不但在上层支持神经网络,它还很全面的支持别的机器学习的算法,像K-Means,决策树,向量积等等。它对语言的支持也不少,Python、C++、Java。在硬件层面,它也能够利用CPU,GPU进行计算。
另外的谷歌还出了专门的处理器,叫TPU,也就是Tensor处理器,另外它也支持在移动端使用。还提供了一个叫TensorBoard的可视化工具。这个工具很是强大,它能够基于运行的一些日志和文件,可视化得把模型训练和结果展示出来。
TensorFlow提供了不一样层次的接口,从低层到高层。越低的层次越灵活,越容易去控制,越高层次是越容易使用。
TensorFlow支持的语言也很是多:Go、Python、C++、Java、Swift、R语音、C#、js等。
还有运行在Web端的TensorFlow.js,咱们可使用Javascript在网页端进行机器学习的训练和使用。在移动端一样提供支持的是TensorFlowLite,咱们能够把在服务器端训练好的模型下发到移动端(Android、iOS、树莓派等),在移动端经过TensorFlowLite来使用。