如果您正在阅读这篇文章,那么您可能已经开始了自己的深度学习之旅。如果您还不熟悉该领域,简单来说,深度学习使用“人工神经网络”,这是专门的类脑架构,该领域的目标是开发人形计算机。为了帮助开发这些架构,谷歌、Facebook和Uber等科技巨头发布了Python深度学习环境框架,使学习、构建和训练不同类型的神经网络变得更加容易。本文将详细介绍和比较两个流行的框架:TensorFlow和PyTorch。一、谷歌的TensorFlowTensorFlow是由谷歌开发者创建并于2015年发布的开源深度学习框架,官方研究发表于论文《TensorFlow:异构分布式系统上的大规模机器学习》。论文地址:http://download.tensorflow.org/paper/whitepaper2015.pdfTensorFlow已被公司、企业和初创公司广泛用于自动化工作任务和开发新系统。其分布式培训支持、可扩展的生产和部署选项、对多种设备(如Android)的支持广受好评。2.Facebook的PyTorchPyTorch是最新的深度学习框架之一,由Facebook的团队开发,并于2017年在GitHub上开源。有关其开发的更多信息,请参阅论文《PyTorch 中的自动微分》。论文地址:https://openreview.net/pdf?id=BJJsrmfCZPyTorch非常简洁易用,支持动态计算图,高效使用内存,因此越来越受欢迎。接下来会详细介绍。3.我们可以用TensorFlow和PyTorch构建什么?神经网络最初用于解决简单的分类问题,例如识别手写数字或用相机识别汽车牌照。但随着框架的最新发展和NVIDIA高性能计算图形处理单元(GPU)的进步,我们可以在数TB的数据上训练神经网络并解决更复杂的问题。值得一提的一项成就是在ImageNet上的TensorFlow和PyTorch中实现的卷积神经网络的最先进性能。训练好的模型可以用于不同的应用,例如目标检测、图像语义分割等。尽管神经网络架构可以基于任何框架实现,但结果并不相同。训练过程中有大量与框架密切相关的参数。例如,如果您在PyTorch上训练数据集,您可以使用GPU来增强其训练过程,因为它们在CUDA(C++后端)上运行。TensorFlow也可以使用GPU,但它使用自己内置的GPU加速。因此,根据您选择的框架,训练模型的时间总是会有所不同。1.TensorFlowExcellentProjectMagenta:一个探索使用机器学习作为创作过程工具的开源研究项目:https://magenta.tensorflow.org/Sonnet:这是一个基于TensorFlow的软件库,可以使用构建复杂的神经网络网络:https://sonnet.dev/Ludwig:这是一个无需编写代码即可训练和测试深度学习模型的工具箱:https://uber.github.io/ludwig/2。PyTorch优秀项目CheXNet:使用深度学习分析胸部X光片实现放射科医生级别的肺炎监测:https://stanfordmlgroup.github.io/projects/chexnet/PYRO:这是一种通用的概率编程语言(PPL)编写的在Python中,后端由PyTorch支持:https://pyro.ai(https://pyro.ai/)Horizo??n:AplatformforAppliedReinforcementLearning(AppliedRL):https://horizo??nrl.com(https://horizo??nrl.com/)这些只是构建在TensorFlow和PyTorch之上的少数框架和项目。您可以在TensorFlow和PyTorch的GitHub和官方网站上找到更多信息。4.PyTorchvsTensorFlowPyTorch和TensorFlow之间的主要区别在于它们执行代码的方式。这两个框架都基于张量数据类型工作。您可以将张量视为多维数组,如下图所示。1.机制:动态图定义与静态图定义TensorFlow框架由两个核心构建块组成:用于定义计算图的软件库和用于在各种不同硬件上执行这些图的运行时。具有许多优点的计算图(这些优点将在稍后描述)。计算图是一种将计算描述为有向图的抽象方式。图是由节点(顶点)和边组成的数据结构,是由有向边成对连接的顶点的集合。当您在TensorFlow中运行代码时,计算图是静态定义的。所有与外界的通信都是通过tf.Sessionobject和tf.Placeholder执行的,它们是在运行时被外部数据替换的张量。例如,看看下面的代码片段:下图是在代码运行之前,计算图是如何在TensorFlow中静态生成的。计算图的核心优势是能够实现并行化或依赖驱动调度,可以让训练更快更高效。与TensorFlow类似,PyTorch也有两个核心模块:计算图的按需和动态构建Autograd:执行动态图的自动微分可以看下图,图会随着执行的进行而变化和执行节点,有没有特殊的会话界面或占位符。总的来说,该框架与Python语言集成得更紧密,大多数时候感觉更原生。因此,PyTorch是更Pythonic的框架,而TensorFlow感觉像是一种全新的语言。根据您使用的框架,它在软件世界中非常不同。TensorFlow提供了一种使用TensorFlowFold库实现动态图的方法,内置了PyTorch的动态图。2.分布式训练PyTorch和TensorFlow的主要区别之一是数据并行化。PyTorch优化性能的方式是利用Python对异步执行的原生支持。使用TensorFlow,您必须手动编码和微调每个操作才能在特定设备上运行以进行分布式训练。但是,您可以将PyTorch中的所有内容复制到TensorFlow中,但这需要大量工作。下面的代码片段展示了一个使用PyTorch实现模型分布式训练的简单例子:3.可视化在训练过程的可视化方面,TensorFlow更有优势。可视化可以帮助开发人员跟踪训练过程并使调试更容易。TensorFlow的可视化库叫做TensorBoard。PyTorch开发人员使用Visdom,但Visdom提供的功能简单且有限,因此TensorBoard更擅长可视化训练过程。TensorBoard的功能:跟踪和可视化损失和准确度等指标可视化计算图(操作和层)查看随时间变化的权重、偏差或其他张量的直方图显示图像、文本和音频数据分析TensorFlow程序在TensorBoard中可视化训练Visdom的功能:HandlingCallbacksDrawingDiagramsandDetailManagementEnvironmentVisdom中的可视化训练4.生产部署TensorFlow是将训练好的模型部署到生产中的明显赢家。我们可以直接使用TensorFlowserving在TensorFlow中部署模型,TensorFlowserving是一个使用RESTClientAPI的框架。在最新的1.0稳定版本中使用PyTorch时,生产部署会更容易一些,但它不提供任何直接在Web上部署模型的框架。您必须使用Flask或Django作为后端服务器。因此,如果关注性能,TensorFlow服务可能是更好的选择。5.用PyTorch和TensorFlow定义一个简单的神经网络让我们比较一下如何在PyTorch和TensorFlow中声明一个神经网络。在PyTorch中,神经网络是一个类,我们可以使用torch.nn包导入构建架构所需的层。首先在__init__()方法中声明所有层,然后forward()方法定义输入x如何遍历网络的所有层。最后,我们声明一个变量模型并将其分配给定义的架构(model=NeuralNet())。最近Keras被合并到TensorFlow库中,这是一个使用TensorFlow作为后端的神经网络框架。从那时起,在TensorFlow中声明层的语法与Keras的语法相似。首先,我们声明变量并将其分配给我们要声明的模式类型,在本例中为Sequential()模式。接下来,我们使用model.add()方法以顺序方式直接添加层。层的类型可以从tf.layers中导入,如下代码片段所示:5.TensorFlow和PyTorch的优缺点TensorFlow和PyTorch各有优缺点。TensorFlow的优点:简单的内置高级API使用TensorBoard进行可视化训练使用TensorFlow服务轻松进行生产部署易于移动平台支持开源良好的文档和社区支持TensorFlow缺点??:静态图调试方法难以快速修改PyTorch的优点Python-like代码动态图编辑方便快捷良好的文档和社区支持开源许多项目使用PyTorchPyTorch缺点:可视化需要第三方生产部署需要API服务器六、PyTorch和TensorFlow的安装、版本、更新PyTorch和TensorFlow最近发布了新的版本:PyTorch1.0(第一个稳定版)和TensorFlow2.0(测试版)。两个版本都有重大更新和新功能,使训练过程更加高效、流畅和强大。如果你想在你的机器上安装这些框架的最新版本,你可以从源代码构建或通过pip安装。1.PyTorch安装macOS和Linuxpip3installtorchtorchvisionWindowspip3installhttps://download.pytorch.org/whl/cu90/torch-1.1.0-cp36-cp36m-win_amd64.whlpip3installhttps://download.pytorch.org/whl/cu90/torchvision-0.3。0-cp36-cp36m-win_amd64.whl2。TensorFlow安装macOS、Linux和Windows#CurrentstablereleaseforCPU-onlypipinstalltensorflow#InstallTensorFlow2.0Betapipinstalltensorflow==2.0.0-beta1要检查是否安装成功,请使用命令提示符或终端按照以下步骤操作。7.TensorFlow还是PyTorch?我的推荐TensorFlow是一个非常强大和成熟的深度学习库,具有强大的可视化能力和高级模型开发的多种选择。它具有用于生产部署的选项并支持移动平台。另一方面,PyTorch框架还很年轻,社区动员性更强,对Python友好。我的建议是,如果你想更快地开发和构建AI相关的产品,TensorFlow是一个不错的选择。推荐研究开发人员使用PyTorch,因为它支持快速和动态的训练。原文链接:https://builtin.com/data-science/pytorch-vs-tensorflow【本文为微信《机器之心》专栏原文翻译公众号《机器之心》(id:almosthuman2014)"]戳这里,阅读更多本作者的好文
