TensorFlow与与PyTorch之争,哪个框架最适合深度学习之争,哪个框架最适合深度学习
(给Python开发者加星标,提升Python技能)
编译:机器之心,作者:Vihar Kurama
谷歌的 Tensorflow 与 Facebook 的 PyTorch 一直是颇受社区欢迎的两种深度学习框架。那么究竟哪种框架最适宜自己手边的深度学习项目呢?本文作者从这两种框架各自的功能效果、优缺点以及安装、
版本更新等诸多方面给出了自己的建议。如果你在读这篇文章,那么你可能已经开始了自己的深度学习之旅。如果你对这一领域还不是很熟悉,那么简单来说,深度学习使用了「人工神经网络」,这是
一种类似大脑的特殊架构,这个领域的发展目标是开发出能解决真实世界问题的类人计算机。为了帮助开发这些架构,谷歌、Facebook 和 Uber 等科技巨头已经为 Python 深度学习环境发布了多款框
架,这让人们可以更轻松地学习、构建和训练不同类型的神经网络。本文将详细介绍和比较两种流行的框架:TensorFlow 与 PyTorch。 目录
谷歌的 TensorFlow
Facebook 的 PyTorch
我们可以用 TensorFlow 和 PyTorch 构建什么?
PyTorch 和 TensorFlow 对比
PyTorch 和 TensorFlow 的优点和缺点
PyTorch 和 TensorFlow 安装、版本、更新
TensorFlow 还是 PyTorch?我的建议
谷歌的谷歌的 TensorFlowTensorFlow 是谷歌的开发者创造的一款开源的深度学习框架,于 2015 年发布。官方研究发布于论文《TensorFlow:异构分布式系统上的大规模机器学习》。论文地址:
http://download.tensorflow.org/paper/whitepaper2015.pdfTensorFlow 现已被公司、企业与创业公司广泛用于自动化工作任务和开发新系统,其在分布式训练支持、可扩展的生产和部署选项、多种设备
(比如安卓)支持方面备受好评。Facebook 的的 PyTorchPyTorch 是最新的深度学习框架之一,由 Facebook 的团队开发,并于 2017 年在 GitHub 上开源。有关其开发的更多信息请参阅论文《PyTorch
中的自动微分》。论文地址:https://openreview.net/pdf?id=BJJsrmfCZPyTorch 很简洁、易于使用、支持动态计算图而且内存使用很高效,因此越来越受欢迎。接下来还会更详细地介绍。我们可以用我们可以用
TensorFlow 和和 PyTorch 构建什么?构建什么?神经网络起初是被用于解决手写数字识别或用相机识别汽车注册车牌等简单的分类问题。但随着近来框架的发展以及英伟达高计算性能图形处理单元(GPU)的进
步,我们可以在 TB 级的数据上训练神经网络并求解远远更加复杂的问题。一个值得提及的成就是在 TensorFlow 和 PyTorch 中实现的卷积神经网络在 ImageNet 上都达到了当前最佳的表现。训练后的
模型可以用在不同的应用中,比如目标检测、图像语义分割等等。尽管神经网络架构可以基于任何框架实现,但结果却并不一样。训练过程有大量参数都与框架息息相关。举个例子,如果你在 PyTorch
上训练一个数据集,那么你可以使用 GPU 来增强其训练过程,因为它们运行在 CUDA(一种 C++ 后端)上。TensorFlow 也能使用 GPU,但它使用的是自己内置的 GPU 加速。因此,根据你所选框架
的不同,训练模型的时间也总是各不相同。TensorFlow 顶级项目顶级项目Magenta:一个探索将机器学习用作创造过程的工具的开源研究项目:https://magenta.tensorflow.org/Sonnet:这是一个基于
TensorFlow 的软件库,可用于构建复杂的神经网络:https://sonnet.dev/Ludwig:这是一个无需写代码就能训练和测试深度学习模型的工具箱:https://uber.github.io/ludwig/PyTorch 顶级项目顶级项目CheXNet:
使用深度学习来分析胸部 X 光照片,能实现放射科医生水平的肺炎监测:https://stanfordmlgroup.github.io/projects/chexnet/PYRO:这是一种用 Python 编写的通用概率编程语言(PPL),后端由
PyTorch 支持:https://pyro.ai (https://pyro.ai/)Horizon:一个用于应用强化学习(Applied RL)的平台:https://horizonrl.com (https://horizonrl.com/)这些只是基于 TensorFlow 和 PyTorch 构建的少量框
架和项目。你能在 TensorFlow 和 PyTorch 的 GitHub 和官网上找到更多。PyTorch 和和 TensorFlow 对比对比PyTorch 和 TensorFlow 的关键差异是它们执行代码的方式。这两个框架都基于基础数据类型张
量(tensor)而工作。你可以将张量看作是下图所示的多维数组。 机制:机制:动态图定义与静态图定动态图定义与静态图定
义义TensorFlow 框架由两个核心构建模块组成:
一个用于定义计算图以及在各种不同硬件上执行这些图的运行时间的软件库。
一个具有许多优点的计算图(后面很快就会介绍这些优点)。
计算图是一种将计算描述成有向图的抽象方式。图是一种由节点(顶点)和边构成的数据结构,是由有向的边成对连接的顶点的集合。当你在 TensorFlow 中运行代码时,计算图是以静态方式定义的。
与外部世界的所有通信都是通过 tf.Sessionobject 和 tf.Placeholder 执行,它们是在运行时会被外部数据替换的张量。例如,看看以下代码段:
下图是 TensorFlow 中运行代码之前以静态方式生成计算图的方式。计算图的核心优势
是能实现并行化或依赖驱动式调度(dependency driving scheduling),这能让训练速度更快,更有效率。
评论4
最新资源