下面将为大家介绍目前最新受欢迎的十大深度学习框架。
TensorFlow
- TensorFlow支撑python、JavaScript、C 、Java和Go,C#和Julia等多种编程语言。
- TF不只具有强大的计算集群,还可以在iOS和Android等移动平台上运转模型。
- TF编程入门难度较大。初学者需要仔细考虑神经网络的架构,正确评估输入和输出数据的维度和数量。
- TF运用静态计算图进行操作 。 也就是说咱们需要先界说图形,然后运转计算,如果咱们需要对架构进行更改,咱们会从头训练模型。 挑选这样的办法是为了提高功率,但是许多现代神经网络工具可以在学习过程中考虑改进而不会显着下降学习速度。 在这方面,TensorFlow的首要竞争对手是PyTorch 。
- 它十分合适创建和实验深度学习架构,便于数据集成,如输入图形,SQL表和图画。
- 它得到谷歌的支撑,这就阐明该模型短期内不会被抛弃,因此值得投入时间来学习它。
PyTorch
- 与TensorFlow不同,PyTorch库运用动态更新的图形进行操作 。 这意味着它可以在流程中更改体系结构。
- 在PyTorch中,您可以运用标准调试器 ,例如pdb或PyCharm。
PyTorch长处:
- 练习神经网络的进程简单明了。 同时,PyTorch支持数据并行和分布式学习模型,而且还包含许多预先练习的模型。
- PyTorch更适合小型项目和原型规划。
Sonnet
- 面向目标的库,在开发神经网络(NN)或其他机器学习(ML)算法时更加抽象。
- Sonnet的主意是结构对应于神经网络的特定部分的主要Python目标。 此外,这些目标独登时连接到核算TensorFlow图。 别离创建目标并将其与图形相关联的过程简化了高档体系结构的规划。Sonnet长处:
Keras
- 除了Tensorflow之外,Keras仍是其他盛行的库(如Theano和CNTK)的高档API。
- 在Keras中更简单创立大规模的深度学习模型,但Keras结构环境装备比其他底层结构要杂乱一些。
Keras优点:
顺便说一下TensorFlow和Keras的比照:
Keras处于高度集成结构。 虽然更简单创立模型,但是面临杂乱的网络结构时或许不如TensorFlow。
MXNet
- 该框架支撑多种语言,如C ,Python,R,Julia,JavaScript,Scala,Go,甚至Perl。
- 能够在多个GPU和许多机器上非常有效地并行核算。
MXNet长处:
GLUON
- Gluon的特殊性是具有一个灵活的界面,简化了原型设计,构建和训练深度学习模型,而不会献身学习速度。
- Gluon根据MXNet,供给简略的API,简化深度学习模型的创立。
- 与PyTorch类似,Gluon结构支持使用动态图表 ,将其与高性能MXNet相结合。 从这个视点来看,Gluon看起来像是分布式核算的Keras十分有趣的替代品。
GLUON长处:<ul class="postList list-paddingleft-2" font-size:16px;background-color:#ffffff;"="" style="font-family: "sans serif", tahoma, verdana, helvetica; font-size: 12px; white-space: normal;">
- 在Gluon中,您能够运用简略,明晰和简洁的代码定义神经网络。
- 它将训练算法和神经网络模型结合在一起,从而在不献身性能的情况下供给开发进程的灵活性。
- Gluon能够定义动态的神经网络模型,这意味着它们能够动态构建,运用任何结构,并运用Python的任何本机控制流。
SWIFT
当你听到Swift时,您可能会考虑iOS或MacOS的应用程序开发。但是如果你正在学习深度学习,那么你一定听说过Swens for Tensorflow。通过直接与通用编程语言集成,Swift for TensorFlow可以以前所未有的方式表达更强大的算法。SWIFT基本特性:
- 可以轻松获得可微分的自定义数据结构。
- 下一代API 。 通过实践和研究获得的新API更易于使用且更强大。
- 在TensorFlow的基础上 ,Swift API为您提供对所有底层TensorFlow运算符的直接调用。
- 基于Jupyter、LLDB或者Swift in Colab的编程工具提高了您的工作效率。
SWIFT优点:
- 如果动态语言不适合您的任务,那么这将是一个很好的选择。 当你训练运行了几个小时,然后你的程序遇到类型错误,那么使用Swift,一种静态类型语言。您将看到代码错误的地方。
Chainer
直到CMU的DyNet和Facebook的PyTorch出现之前,Chainer是动态计算图或网络的领先神经网络框架,它允许输入数据长度不一致。chainer基本特性:
- Chainer代码是在Numpy和CuPy库的基础之上用纯Python编写的, Chainer是第一个使用动态架构模型的框架。
Chainer优点:
- 通过自己的基准测试,Chainer明显比其他面向Python的框架更快,TensorFlow是包含MxNet和CNTK的测试组中最慢的。
- 比TensorFlow更好的GPU和GPU数据中心性能。最近Chainer成为GPU数据中心性能的全球冠军。
DL4J
那些使用Java或Scala的人应该注意DL4J(Deep Learning for Java的简称)。DL4J的基本特性:
- DL4J中的神经网络训练通过簇的迭代并行计算。
- 该过程由Hadoop和Spark架构支持。
- 使用Java允许您在Android设备的程序开发周期中使用。
DL4J优点:
- 如果您正在寻找一个良好的Java深度学习框架,这会是一个非常好的平台。
ONNX
ONNX项目诞生于微软和Facebook,旨在寻找深度学习模型呈现的开放格式。 ONNX简化了在人工智能的不同工作方式之间传递模型的过程。 因此ONNX具有各种深度学习框架的优点。ONNX基本特性:
- ONNX使模型能够在一个框架中进行训练并转移到另一个框架中进行推理。 ONNX模型目前在Caffe2,Microsoft Cognitive Toolkit,MXNet和PyTorch中得到支持,并且还有许多其他常见框架和库的连接器。
ONNX优点:
- 对于PyTorch开发人员来说,ONNX是一个好的选择。 但是对于那些喜欢TensorFlow的人来说,Keras等可能好一点。
总结
那么您应该使用哪种深度学习框架?下面是几点建议:
- 如果你刚刚开始学习,那么最好的选择是Keras 。
- 出于研究目的,请选择PyTorch 。
- 对于生产,您需要关注环境。 因此对于Google Cloud,最好的选择是TensorFlow ,适用于AWS - MXNet和Gluon 。
- Android开发人员应该关注D4LJ ,对于iOS来说, Core ML会破坏类似的任务范围。