当前位置: 首页 > 科技观察

TensorFlow评述:最佳深度学习库,且仍在不断演进_0

时间:2023-03-14 21:25:48 科技观察

TensorFlowReview:TheBestDeepLearningLibrary,andIt'sStillEvolving,更高的成熟度和更低的学习和使用门槛。如果你去年关注过TensorFlow深度学习框架,你会发现入门难度很大,成熟度有限。但现在,这个由谷歌构建的解决方案已经过彻底改造。自2016年10月对TensorFlowr0.10进行评估以来,谷歌的开源深度学习框架更加成熟,实现了更多的算法和部署选项,大大降低了编程难度。TensorFlow现已迎来r1.4.1版本(稳定版和web文档)、r1.5版本(releasecandidate)、pre-releaser1.6版本(master分支和dailybuild版本)。TensorFlow项目可谓是最具活力的。粗略统计,GitHub上的TensorFlow存储库目前有27,000次提交、85,000个星标和42,000个复刻。这些数字令人印象深刻,直观地反映了人们对TensorFlow项目的高度兴趣——甚至超过了Node.js库的受欢迎程度。相比之下,亚马逊支持的另一个竞争框架MXNet的活跃度相对较低:不到7,000次提交,大约13,000颗星,不到5,000次分叉。TensorFlowr1于2017年2月发布。版本0发布时的另一项统计显示,TensorFlow目前在6,000多个在线开源代码存储库中使用。在今天的评测中,我将重点讨论截至2018年1月TensorFlow的发展状况,同时展示去年加入的重要特性。TensorFlow功能TensorFlow支持手写数字分类、图像识别、词嵌入、递归神经网络、序列到序列机器翻译模型、自然语言处理和基于PDE(即偏微分方程)的模拟。此外,它还支持CPU和NvidiaGPU。sequence-to-sequence项目在UbuntuLinux、MacOS、Android、iOS和Windows上运行(比以往任何时候都好)。还可以支持训练中使用的模型进行大规模生产预测,具有更高的灵活性。此外,它仍然保留自动微分,在TensorBoard中提供模型可视化工具,并提供对Python语言的全面支持(对不起,R和Scala程序员)。从r0.10版本开始,TensorFlow陆续发布了很多改进、增强和附加功能,同时也修复了各种bug。下面我会选择一些关键问题进行说明——比如每个版本都升级了对CUDA和cuDNN库的支持,并使用最新的NvidiaGPU来优化代码以提高性能。此外,还实现了DHFS(Hadoop文件系统)支持能力,提升了Windows实现效果,并迎来了新的求解器和更好的Go支持。经过几个月的期待,TensorFlow图形性能改进XLA(专用编译器)和TensorFlow调试器发布了。同时,TensorFlow项目与PyPl、pip等标准Python基础设施也有更好的对接能力,也能适配科学计算领域广泛使用的NumPy工具包。我们还看到了RNN(常用于自然语言处理的递归神经网络)支持能力和新的英特尔MKL(数学核心库)集成能力,显着提升了CPU在深度学习领域的性能。为了便于编程,添加了内置估计器(预定义模型层),包括几个回归器和分类器。TensorFlow中添加了几组新的库,用于统计分布、信号处理原语和图像的可区分重采样。作为TensorFlow的具体实现,开发了Keras(它提供专用的高级神经网络API,也可以运行在MXNet、Deeplearning4j、MicrosoftCognitiveTooltit和Teano上)。社区开发过程表明它已经交付了出色的成果——几个相关的贡献模块已被合并到内核库中,另一组服务器库可以针对生产部署进行优化。TensorFlow项目欢迎向后兼容的训练数据集库;所有这些对于在标准训练数据集上开发新模型都很重要。此外,Java支持已多次实施和增强。***,在TensorFlowr1.5中,eagerexecution(使TensorFlow能够支持N??umPy等命令式编程风格的实验性接口)和TensorFlowLite(为移动和嵌入式设备启用预测功能)的预览版正式发布。TensorFlow安装总的来说,TensorFlow的安装方式有了明显的改进。一如既往,TensorFlow仍然提供多种安装方式,包括使用Python虚拟环境、“原生”pip、Docker从源构建。TensorFlow团队推荐使用虚拟环境进行安装;我个人选择使用“原生”pip,因为我之前已将它安装在我的MacBookPro上,并且不想在磁盘空间不足时处理卸载的麻烦。IDG为Mac安装了一套TensorFlownightlybuilds,这是一个相对较新的安装选项,效果很好。安装/升级后,我交互式地测试了它的标准TensorFlow功能。除了每个发行版的二进制文件外,TensorFlow团队现在还为Linux、Mac和Windows提供主分支二进制文件的夜间构建。在Mac上的夜间安装很容易完成:sudopiinstalltf-nightly虽然当前的master分支文档声称拥有所有三个平台的CPU和GPU库版本的夜间构建资源,但我无法使用mac-pip找到它们并安装GPU版本的Mac平台。根据我的经验,MacGPU版本应该尝试安装,但从未成功;直到r1.2,MacGPU版本才被正式废弃。我不确定是否有计划为r1.6恢复MacGPU版本,或者TensorFlow团队发布的夜间构建说明中是否存在错误。不管怎样,在不改变当前安装条件的前提下,当前GPU版本的快速安装效果确实比之前更好。尽管如此,MacBookPro显然不是使用TensorFlow训练深度学习模型的理想设备。使用包含一个或多个较新的高端NvidiaGPU的Linux机器,您可以获得更好的结果。或者,您可以花几千美元构建自己的用于深度学习的PC。如果您只需要偶尔进行模型训练,则可以使用配备GPU的实例在AWS、Azure、GoogleComputeEngine或IBMCloud上轻松运行TensorFlow。在使用TensorFlow一年之前,TensorFlow项目主要有两个问题——难学,编码量太大。今天,这两个问题都得到了解决。为了简化TensorFlow的学习门槛,TensorFlow团队制作了更多的学习资料,并对已有的入门教程进行了完善。此外,一些第三方也推出了自己的TensorFlow教程。此外,还有很多已经出版的TensorFlow书籍,加上一系列的大型TensorFlow课程。您甚至可以学习斯坦福大学的TensorFlowforDeepLearningResearch(CS20)课程,该课程提供所有在线演示和讲座。TensorFlow库的几个新增功能也开始提供用于模型创建和训练的接口,这些接口需要更少的编码。其中包括tf.kera,它提供了引擎中立的Keras工具包的纯TensorFlow版本,以及tf.estimator,它提供了各种高级模型处理功能——用于线性回归和分类器、深度神经网络(简称DNN)、线性和DNN组合,以及可用于构建您自己的估计器的基类。此外,数据集API允许用户从简单、可重复使用的部分构建复杂的输入管道——这意味着您不再被迫选择一个而不是另一个。如TensorFlow-Keras教程中所述,您可以轻松地将tf.keras、tf.data.dataset和tf.estimator结合使用。TensorFlowLiteTensorFlowLite目前处于开发者预览阶段。它是TensorFlow的轻量级版本,可以在移动和嵌入式设备上运行,以低延迟和低资源需求(但不是训练。)实现设备上的机器学习推理。TensorFlowLite还支持AndroidNeuralNetworksAPI的硬件加速机制。TensorFlowLite模型足够小,可以在移动设备上运行,甚至可以支持离线用例。IDGTensorFlowLite允许小型神经网络模型在Android和iOS设备上运行,甚至可以离线执行。该库目前仍处于开发者预览阶段,不保证向上或向下兼容性。TensorFlowLite的基本思想是,当用户训练完一套完整的TensorFlow模型并将其转换为TensorFlowLite格式后,就可以在Android或iOS上的移动应用程序中使用转换后的文件。当然,你也可以使用预训练好的TensorFlowLite模型来实现图片分类或者智能答题。SmartReply使用上下文信息来提供高度相关的消息,这与Google在Gmail客户端中的回复预测功能基本相同。另一个使用选项是在新的标记数据集上重新训练现有模型,这将显着减少训练时间。TensorFlowServingTensorFlowServing是一套灵活、高性能的服务系统,专为机器学习模型设计,适用于生产环境。它不仅可以提供单个模型,还可以同时使用多个版本的servables,客户端会直接使用最新版本或者根据特定版本ID调用特定模型——这将大大简化实验过程供您尝试新算法。您还可以将复合模型表示为多个独立的可服务对象或单个复合可服务对象。对可服务对象的访问由源控制,源可以从任何存储系统发现可服务对象。TensorFlowEager是TensorFlow的实验性接口,提供类似于NumPy的命令式编程风格。当您启用eagerexecution时,TensorFlow操作会立即执行——这意味着您不需要使用Session.run()来执行预构建的图形。这种方式可以有效简化TensorFlow矩阵运算和模型代码,但目前还没有提供向上向下兼容保证的preview/pre-version。与运行会话相比,eagerexecution也会有效简化TensorFlow代码的调试过程。Eagerexecution与NumPy数组、GPU加速、自动微分和tf.layers模块中使用的Keras风格的Layer类兼容。您可以发布摘要并在TensorBoard中使用它,但您需要使用一组新的分布式版本的摘要类。EagerExecution文档警告说“我们仍在积极致力于支持分布式和多GPU训练以及CPU性能。”前沿。如前所述,在过去的一年里,TensorFlow在性能、部署、易学易用、易编程以及与常见Python库和实用程序的兼容性方面迎来了巨大的改进。然而,在同一时期,其他竞争性深度学习框架也在不断改进。MXNet已被纳入Apache基金会,并在功能和性能方面得到了改进。MicrosoftCognitiveToolkit在很多方面也取得了进展,包括实现了对Keras和TensorBoard的支持。Facebook的Caffe2是对Caffe的重要改写,在图像处理卷积网络中加入了递归和LSTM(长短期记忆)网络支持。开源的H2O.ai预测引擎凭借其出色的专有超参数调整和特征工程层得到了增强,并迎来了DrverlessAI,这是一个消耗大量资源但物有所值的特征工程层。Scikit-learn在其专业领域机器学习(而非深度学习)领域继续蓬勃发展。对于已经在使用Spark且不需要训练深度神经网络的用户,SparkMLlib也是一个不错的选择。只要你具备TensorFlow编程必备的技能,那么TensorFlow绝对是你深度学习模型构建、训练和生产的最佳选择。但如果您是TensorFlow的新手,请先尝试tf.keras、tf.data.dataset和tf.estimator提供的高级API。如果你需要更底层的API,你可能需要增加对平台的熟悉度,才能顺利使用。使用成本:基于ApacheLicesne2.0版本的免费开源项目。适用平台:Ubuntu14.04+、MacOS10.11+、Windows7+,推荐使用NVIDIAGPU和CUDA。大多数云解决方案现在都支持与NvidiaGPU一起使用的TensorFlow。TensorFlowLite可以在Android和iOS设备上运行预训练模型。项目概况TensorFlowr1.5:谷歌的深度学习开源框架更加成熟,启用了更多的算法和部署选项,编程难度也有所降低。优点:多种模型和算法配合GPU或TPU硬件实现优异的性能对Python提供良好的支持,现在可以与NumPy顺利集成出色的文档提供出色的计算网络图形展示软件缺点:仍然很难学,但是很难它比以前有所下降。对Java、C和Go语言的支持落后于Python。不支持R或Lua语言原文链接:https://www.infoworld.com/article/3250165/machine-learning/tensorflow-review-the-best-deep-learning-library-gets-better.html更多AI内容请关注公众号:AIPromoter【译文,合作网站转载请注明原译者及出处为.com】