TensorFlow vs Theano vs Torch vs Keras:深度学习库
自2016年以来,人工智能的普及度不断提高,20%的大公司都在业务中使用人工智能(麦肯锡报告,2018)。根据同一份报告,人工智能可以在各行业创造巨大的价值。例如,在银行业,人工智能的潜力估计为3000亿美元,而在零售业,这一数字飙升至6000亿美元。
为了释放人工智能的潜在价值,公司必须选择合适的深度学习框架。在本教程中,您将了解可用于执行深度学习任务的不同库。一些库已经存在多年,而像TensorFlow这样的新库近年来才出现。
8个最佳深度学习库/框架
在此列表中,我们将比较顶级的深度学习框架。它们都是开源的,并在数据科学家社区中广受欢迎。我们还将比较流行的ML即服务提供商。
Torch
Torch是一个老牌的开源机器学习库。它首次发布是在15年前。它的主要编程语言是LUA,但也有C语言的实现。与PyTorch vs TensorFlow相比,它支持广泛的机器学习算法库,包括深度学习。它支持用于并行计算的CUDA实现。
Torch深度学习工具被Facebook、Google、Twitter、Nvidia等大多数领先实验室使用。Torch有一个名为Pytorch的Python库。
Infer.net
Infer.net由微软开发和维护。Infer.net是一个主要关注贝叶斯统计的库。Infer.net是一款用于深度学习的可视化工具,旨在为从业者提供最先进的概率建模算法。该库包含分析工具,如贝叶斯分析、隐马尔可夫链、聚类。
Keras
Keras是用于深度学习的Python框架。它是一个方便的库,可以构建任何深度学习算法。Keras的优点是它使用相同的Python代码在CPU或GPU上运行。此外,编码环境纯净,允许训练最先进的计算机视觉、文本识别等算法。
Keras由Google的研究员François Chollet开发。Keras被CERN、Yelp、Square、Google、Netflix和Uber等知名组织使用。
Theano
Theano是蒙特利尔大学于2007年开发的深度学习库。与Theano vs TensorFlow相比,它提供快速计算,并且可以在CPU和GPU上运行。Theano旨在训练深度神经网络算法。
Microsoft Cognitive Toolkit (CNTK)
Microsoft toolkit,以前称为CNTK,是微软开发的深度学习库。据微软称,该库是市场上最快的之一。Microsoft toolkit是一个开源库,尽管微软在其Skype、Cortana、Bing和Xbox等产品中广泛使用它。该工具包同时提供Python和C++版本。
MXNet
MXnet是一个新兴的深度学习库。它支持多种编程语言,包括C++、Julia、Python和R。MXNet可以配置为在CPU和GPU上运行。MXNet包含最先进的深度学习架构,如卷积神经网络和长短期记忆网络。MXNet构建为与动态云基础设施协同工作。MXNet的主要用户是Amazon。
Caffe
Caffe是Yangqing Jia在伯克利攻读博士学位期间创建的一个库。与Caffe vs TensorFlow相比,Caffe是用C++编写的,并且可以在CPU和GPU上执行计算。Caffe的主要用途是卷积神经网络。尽管如此,在2017年,Facebook为Caffe增加了更多的深度学习架构,包括循环神经网络。Caffe被学者、初创公司以及Yahoo!等大型公司使用。
TensorFlow
TensorFlow是Google的开源项目。TensorFlow是当今最著名的深度学习库。它于2015年末向公众发布。
TensorFlow是用C++开发的,并提供方便的Python API,尽管也提供C++ API。像Airbus、Google、IBM等知名公司正在使用TensorFlow来生产深度学习算法。
TensorFlow vs Theano vs Torch vs Keras vs infer.net vs CNTK vs MXNet vs Caffe:主要区别
库 | 平台 | 编写语言 | CUDA支持 | 并行执行 | 已训练模型 | RNN | CNN |
---|---|---|---|---|---|---|---|
Torch | Linux、macOS、Windows | Lua | 是 | 是 | 是 | 是 | 是 |
Infer.Net | Linux、macOS、Windows | Visual Studio | 否 | 否 | 否 | 否 | 否 |
Keras | Linux、macOS、Windows | Python | 是 | 是 | 是 | 是 | 是 |
Theano | 跨平台 | Python | 是 | 是 | 是 | 是 | 是 |
TensorFlow | Linux、macOS、Windows、Android | C++、Python、CUDA | 是 | 是 | 是 | 是 | 是 |
MICROSOFT COGNITIVE TOOLKIT | Linux、Windows、Mac(通过Docker) | C++ | 是 | 是 | 是 | 是 | 是 |
Caffe | Linux、macOS、Windows | C++ | 是 | 是 | 是 | 是 | 是 |
MXNet | Linux、Windows、macOS、Android、iOS、Javascript | C++ | 是 | 是 | 是 | 是 | 是 |
结论
TensorFlow是所有库中最好的,因为它旨在让所有人都能轻松使用。Tensorflow库包含不同的API,可以大规模构建CNN或RNN等深度学习架构。TensorFlow基于图计算,它允许开发人员通过Tensorboad可视化神经网络的构建。这个工具有助于调试程序。最后,Tensorflow旨在大规模部署。它可以在CPU和GPU上运行。
与其他的深度学习库相比,Tensorflow在GitHub上获得了最大的关注度。
比较机器学习即服务
以下是4个流行的DL即服务提供商
Google Cloud ML
Google为开发者提供了Cloud AutoML中的预训练模型。对于没有扎实机器学习背景的开发者来说,这个解决方案非常有用。开发者可以将其数据用于Google最先进的预训练模型。它允许任何开发者在几分钟内训练和评估任何模型。
Google目前提供用于计算机视觉、语音识别、翻译和NLP的REST API。
使用Google Cloud,您可以训练基于TensorFlow、Scikit-learn、XGBoost或Keras的机器学习框架。Google Cloud机器学习将在其云中训练模型。
使用Google云计算的优势在于将机器学习轻松部署到生产环境中。无需设置Docker容器。此外,云计算会负责处理基础设施。它知道如何分配CPU、GPU和TPU资源。通过并行计算,它加快了训练速度。
AWS SageMaker
Google Cloud的主要竞争对手是亚马逊云(AWS)。亚马逊开发了Amazon SageMaker,以允许数据科学家和开发人员构建、训练和部署任何机器学习模型。
SageMaker在Jupyter Notebook中可用,并包含最常用的机器学习库,如TensorFlow、MXNet、Scikit-learn等。使用SageMaker编写的程序会自动在Docker容器中运行。亚马逊负责资源分配以优化训练和部署。
亚马逊为开发者提供API,以便将智能添加到其应用程序中。在某些情况下,无需从头开始构建新模型,因为云中已有强大的预训练模型。亚马逊为计算机视觉、聊天机器人和语言服务提供API服务。
三个主要可用API是
- Amazon Rekognition:为应用程序提供图像和视频识别功能
- Amazon Comprehend:执行文本挖掘和神经语言处理,例如,自动化检查金融文件合法性的过程
- Amazon Lex:为应用程序添加聊天机器人
Azure Machine Learning Studio
Azure Machine Learning Studio可能是最友好的机器学习方法之一。该解决方案的主要优点是无需任何先前的编程知识。
Microsoft Azure Machine Learning Studio是一个拖放式的协作工具,用于创建、训练、评估和部署机器学习解决方案。该模型可以高效地部署为Web服务,并在Excel等多个应用程序中使用。
Azure Machine Learning界面是交互式的,允许用户通过快速拖放元素来构建模型。
模型准备好后,开发人员可以将其保存并推送到AzureGallery或Azure Marketplace。
Azure Machine Learning可以集成到R或Python的自定义内置包中。
IBM Watson ML
Watson studio可以通过简化的流程简化数据项目,该流程允许从数据中提取价值和洞察,帮助企业变得更智能、更快速。Watson studio提供了一个易于使用的协作数据科学和机器学习环境,用于构建和训练模型、准备和分析数据以及在一个地方共享洞察。Watson Studio易于使用,并提供拖放式代码。
Watson studio支持一些最受欢迎的框架,如Tensorflow、Keras、Pytorch、Caffe,并可以将深度学习算法部署到Nvidia最新的GPU上,以加速建模。
结论
在我们看来,Google Cloud解决方案是最推荐的。Google Cloud解决方案在数据存储和机器学习解决方案方面的价格比AWS低至少30%。Google在普及AI方面做得非常出色。它开发了开源语言TensorFlow,优化了数据仓库连接,提供了从数据可视化、数据分析到机器学习的强大工具。此外,Google Console比AWS或Windows更符合人体工程学,也更全面。