细数当前几大深度学习框架
Posted 中科大软院双创实验室
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了细数当前几大深度学习框架相关的知识,希望对你有一定的参考价值。
自从去年三月份,Google开发的AlphaGo打败职业棋手李世石后,人工智能和机器学习的概念开始深入人心,各大高校和研究所也如火如荼的展开了关于人工智能的研究;其实,人工智能自其1956年正式提出后,到今天已经发展了六十多年的时间;那么今天,小编就带大家看看深度学习目前流行的五大框架:
01
Caffe
Caffe是一个清晰而高效的深度学习框架,为伯克利大学比较成熟的单机开源框架,落地产品比较多,主要专注于视觉领域;其作者是毕业于UC Berkeley,目前在Google工作的贾扬清博士。
Caffe的全称是Convolutional Architecture for Fast Feature Embedding,它是开源的,核心语言为C++,支持命令行、Python和MATLAB接口,既可以在CPU上运行也可以在GPU上运行。License为BSD 2-Clause。Caffe的应用范围很广:视觉、语音识别、机器人、神经科学、天文学领域,等等;它提供了一个完整的工具包,用来训练、测试、微调和部署模型;并具有模块化、表示和实现分离、测试覆盖全面、接口丰富和训练参考模型等特点。
Caffe以四维数组blobs方式存储和传递数据,利用层与层之间计算结果传递每一层的输入和输出,其模型是终端到终端的机器学习系统,其网络是一个有向无环图,它通过快速、标准的随机梯度下降算法来训练一个模型。
优点:
1)速度快,性能好,文档全面
2)具有出色的卷积神经网络实现。在计算机视觉领域Caffe依然是最流行的工具包。
3)专精于图像处理,在计算机视觉、图像识别、场景识别、视觉风格识别、目标检测等领域都有应用
缺点:
1)它有很多扩展,但是由于一些遗留的架构问题,不够灵活且对递归网络和语言建模的支持很差。
2)基于层的网络结构,其扩展性不好,对于新增加的层,需要自己实现(forward, backward and gradient update)
02
—
TensorFlow
TensorFlow是Google基于DistBelief进行研发的第二代人工智能学习系统,其命名来源于本身的运行原理。Tensor(张量)意味着N维数组,Flow(流)意味着基于数据流图的计算,TensorFlow对2011年开发的深度学习基础架构DistBelief进行了各方面的改进,它可以在小到一部智能手机、大到数千台数据中心服务器的各种设备上运行。TensorFlow完全开源,任何人都可以用。它的特点如下:
1)高度的灵活性,它不是一个严格的“神经网络”库,只要能够将计算表示为一个数据流图,就可以使用TensorFlow。
2)较强的可移植性。TensorFlow可以在CPU和GPU上运行,也可以将模型在云端服务器或Docker容器里运行。
3)自动求微分。TensorFlow具有自动求微分的能力,只需定义预测模型的结构、将结构和目标函数结合,并添加数据,TensorFlow就能自动计算相关的微分导数。
4)多语言支持。TensorFlow支持C++、Python、Go、Java、Lua和javascript等语言。
03
MXNet
MXNet是一个轻量化分布式可移植的深度学习计算平台,它支持多机多节点、多GPU的计算,其openMP +MPI /SSH+Cuda/Cudnn的框架计算速度很快,并且能够与分布式文件系统结合实现大数据的深度学习。MXNet支持从单机到多GPU、多集群的计算能力。其特点如下:
1)基于赋值表达式建立计算图,类似于TensorFlow、Teano、和Caffe;
2)支持内存管理,并对两个不交叉的变量重复使用同一内存空间;
3)使用C++实现,并提供C风格的头文件。支持Python、R、Julia、Go和JavaScript;
4)支持Torch;
5)支持移动设备端发布。
04
Keras
Keras是一种简约的、高度模块化的神经网络库,是基于Theano的一个深度学习框架,它的设计参考了Torch,用Python语言编写,支持GPU和CPU。其特点为:
1)使用简单,能够快速实现原理;
2)支持卷积网络和递归网络,以及两者的组合;
3)无缝运行在CPU和GPU上;
4)支持任意连接方式,包括多输入多输出训练。
Keras库与其他采用Theano库的区别在于Keras的编码风格非常简约、清晰。它把所有的要点用小类分装起来,能够很容易的组合在一起并创造出一种全新的模型。
05
Torch
Torch诞生已有十多年,是一个广泛支持机器学习算法的科学计算框架,易于使用并且高效,具有简单的快速脚本语言LuaJIT和底层C/DUDA实现,其特点有:
1)具有强大的n维数组;
2)具有丰富的索引、切片和transposing的例程;
3)通过LuaJITd的C接口;
4)线性代数例程;
5)基于能量的神经网络模型;
6)数值优化例程;
7)支持快速高效的GPU;
Torch的目标是通过极其简单的过程、最大的灵活性和速度建立自己的科学算法。Torch有一个在机器学习领域的大型生态社区动库包,包括计算机视觉软件包、信号处理、并行处理、图像、视频、音频和网络等。
Torch的核心是流行的神经网络,它使用简单的优化库,同时具有最大的灵活性,实现复杂的神经网络的拓扑结构。通过CPU和GPU等有效方式,可以建立神经网络和并行任意图。
Torch广泛使用在许多学校的实验室,以及Google、Twitter、NVIDIA、AMD、因特尔和许多其他公司。
以上是关于细数当前几大深度学习框架的主要内容,如果未能解决你的问题,请参考以下文章
细数TensorFlow与PyTorch的优缺点,玩AI,那个框架更加适合你?
带你测试对比深度学习框架!TensorFlow,Keras,PyTorch...哪家强?(附数据集)