Skip to main content
 Web开发网 » 站长学院 » 浏览器插件

深度学习框架都有哪些?

2021年11月03日5600百度已收录

非常专业的一个问题。

深度学习框架是帮助使用者进行深度学习的工具,它的出现降低了深度学习入门的门槛,你不需要从复杂的神经网络开始编代码,就可以根据需要使用现有的模型。

做个比喻,一套深度学习框架就像是一套积木,各个组件就是某个模型或算法的一部分,使用者可以自己设计和组装符合相关数据集需求的积木。

当然也正因如此,没有什么框架是完美的,就像一套积木里可能没有你需要的那一种积木,所以不同的框架适用的领域不完全一致。

深度学习的框架有很多,这里帮你罗列几个:

CaffeCaffe是最成熟的框架之一,由Berkeley Vision and Learning Center开发。它是模块化的,而且速度非常快,并且只需要很少的额外工作就可以支持多个GPU。它使用类似JSON的文本文件来描述网络架构以及求解器方法。

此外,在一个可以下载Caffe模型以及网络权重的网站——“model zoo”中,还可以帮助你快速地准备样本。但是,需要注意的是,在Caffe框架中,要调整超参数比其他框架更为繁琐,部分原因是需要为每组超参数单独定义不同的求解器和模型文件。

深度学习框架都有哪些?  Tensorflow框架 第1张

▲ 使用Caffe编写的LeNet CNN实现代码示例

上图是LeNet CNN架构的代码片段,该模型由卷积最大池化(convolution max pooling)和激活层组成的7层卷积网络构成。

Deeplearning4jDeeplearning4j是由Andrej Karpathy开发的、支持GPU的多平台框架,它是用Java编写的,并拥有一个Scala

API。Deeplearning4j也是一个成熟的框架(用Lua编写),在互联网上有许多可以使用的样本,并且支持多个GPU。

TensorflowTensorflow是一个由谷歌开发的、相对比较新的框架,但已经被广泛采用。它性能良好,支持多个GPU和CPU。Tensorflow提供了调整网络和监控性能的工具,就像Tensorboard一样,它还有一个可用作网络应用程序的教育工具。

TheanoTheano是使用符号逻辑创建网络的框架,是以Python编写的,但利用了numpy的高效代码库,从而提高了性能,超过了标准的Python。Theano在构建网络方面有很大的优势,但是在创造完整的解决方案中则具有比较大的挑战。Theano将机器学习中使用的梯度计算作为网络创建的“免费”副产品,对于那些希望更多地关注网络架构而不是梯度计算的人来说,这可能是有用的。此外,它的文本文件质量也相当不错。

但需要提醒大家的一点是,Theano目前已停止更新。

LasagneLasagne是用Python编写的,建立在Theano之上的框架。它是一个相对简单的系统,能够使得网络构建比直接使用Theano更容易。因此,其表现极大地反映了Theano的潜能。

KerasKeras是用Python编写的框架,可以作为Theano或Tensorflow的后端(如下图)。这使得Keras在构建完整的解决方案中更容易,而且因为每一行代码都创建了一个网络层,所以它也更易于阅读。此外,Keras还拥有最先进算法(优化器(optimizers)、归一化例程(normalization

routines)、激活函数(activation functions))的最佳选择。

需要说明的是,虽然Keras支持Theano和Tensorflow后端,但输入数据的维度假设是不同的,因此需要仔细的设计才能使代码支持两个后端工作。该项目有完备的文本文件,并提供了一系列针对各种问题的实例以及训练好了的、用于传输学习实现常用体系的结构模型。

在编写的时候,有消息宣称Tensorflow将采用Keras作为首选的高级包。其实,这并不奇怪,因为Keras的开发者Francois Chollet本身就是谷歌的软件工程师。

深度学习框架都有哪些?  Tensorflow框架 第2张

▲ 使用Keras编写的LeNet CNN实现代码示例

MXNetMXNet是一个用C

++编写的深度学习框架,具有多种语言绑定,并支持分布式计算,包括多GPU。它提供对低级结构以及更高级/符号级API的访问。在性能上被认为可以与Tensorflow、Caffe等在内的其他框架匹敌。GitHub中提供了很多关于MXNet的教程和培训示例。

Cognitive Network Toolkit (CNTK)CNTK是由微软开发的框架,并被描述为机器学习的“Visual Studio”。对于那些使用Visual Studio进行编程的人,这可能是一种更温和、更有效的进入深度学习的方式。

DIGITSDIGITS是由英伟达开发的,一款基于网络的深层开发工具。在很多方面,它像Caffe一样,能够使用文本文件而不是编程语言来描述网络和参数。它具有网络可视化工具,因此文本文件中的错误更容易被识别出来。此外,它还具有用于可视化学习过程的工具,并支持多个GPU。

TorchTorch是一款成熟的机器学习框架,是用C语言编写的。它具有完备的文本,并且可以根据具体需要进行调整。由于是用C语言编写的,所以Torch的性能非常好。

PyTorchPyTorch是Torch计算引擎的python前端,不仅能够提供Torch的高性能,还能够对GPU的提供更好支持。该框架的开发者表示,PyTorch与Torch的区别在于它不仅仅是封装,而是进行了深度集成的框架,这使得PyTorc在网络构建方面具有更高的灵活性。(如下图)

深度学习框架都有哪些?  Tensorflow框架 第3张

▲ PyTorch代码示例和等效方框图

ChainerChainer与其他框架有点不同,它将网络构建视为其计算的一部分。它的开发者介绍说,在这一框架中,大多数工具都是“定义然后运行”,这意味着你要定义架构,然后才能运行它。Chainer尝试构建并优化其架构,使其成为学习过程的一部分,或者称之为“通过运行定义”。

其他除了上述的深度学习框架之外,还有更多的专注于具体任务的开源解决方案。例如,Nolearn专注于深度信念网络(deep belief

networks);

Sklearn-theano提供了一个与scikit-learn(即Python中一个重要的机器学习的库)匹配的编程语法,可以和Theano库配合使用;Paddle则可以提供更好的自然语言处理能力……

评论列表暂无评论
发表评论
微信