TensorFlow与PyTorch之争,哪个框架最得当深度进修
副问题[/!--empirenews.page--]
假如你在读这篇文章,那么你也许已经开始了本身的深度进修之旅。假如你对这一规模还不是很认识,那么简朴来说,深度进修行使了「人工神经收集」,这是一种相同大脑的非凡架构,这个规模的成长方针是开拓出能办理真实天下题目的类人计较机。为了辅佐开拓这些架构,谷歌、Facebook 和 Uber 等科技巨头已经为 Python 深度进修情形宣布了多款框架,这让人们可以更轻松地进修、构建和实习差异范例的神经收集。本文将具体先容和较量两种风行的框架: TensorFlow 与 PyTorch。 一、谷歌的 TensorFlow TensorFlow 是谷歌的开拓者缔造的一款开源的深度进修框架,于 2015 年宣布。官方研究宣布于论文《TensorFlow:异构漫衍式体系上的大局限呆板进修》。 论文地点:http://download.tensorflow.org/paper/whitepaper2015.pdf TensorFlow 现已被公司、企业与创业公司普及用于自动化事变使命和开拓新体系,其在漫衍式实习支持、可扩展的出产和陈设选项、多种装备(好比安卓)支持方面备受好评。 二、Facebook 的 PyTorch PyTorch 是最新的深度进修框架之一,由 Facebook 的团队开拓,并于 2017 年在 GitHub 上开源。有关其开拓的更多信息请参阅论文《PyTorch 中的自动微分》。 论文地点:https://openreview.net/pdf?id=BJJsrmfCZ PyTorch 很简捷、易于行使、支持动态计较图并且内存行使很高效,因此越来越受接待。接下来还会更具体地先容。 三、我们可以用 TensorFlow 和 PyTorch 构建什么? 神经收集早先是被用于办理手写数字辨认或用相机辨认汽车注册车牌等简朴的分类题目。但跟着迩来框架的成长以及英伟达高计较机能图形处理赏罚单位(GPU)的前进,我们可以在 TB 级的数据上实习神经收集并求解远远越发伟大的题目。一个值得说起的成绩是在 TensorFlow 和 PyTorch 中实现的卷积神经收集在 ImageNet 上都到达了当前最佳的示意。实习后的模子可以用在差异的应用中,好例如针检测、图像语义支解等等。 尽量神经收集架构可以基于任何框架实现,但功效却并纷歧样。实习进程有大量参数都与框架痛痒相干。举个例子,假如你在 PyTorch 上实习一个数据集,那么你可以行使 GPU 来加强其实习进程,由于它们运行在 CUDA(一种 C++ 后端)上。TensorFlow 也能行使 GPU,但它行使的是本身内置的 GPU 加快。因此,按照你所选框架的差异,实习模子的时刻也老是各不沟通。 1. TensorFlow 顶级项目 Magenta:一个试探将呆板学惯用作缔造进程的器材的开源研究项目: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:这是一种用 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)而事变。你可以将张量看作是下图所示的多维数组。 1. 机制:动态图界说与静态图界说 TensorFlow 框架由两个焦点构建模块构成:
计较图是一种将计较描写成有向图的抽象方法。图是一种由节点(极点)和边组成的数据布局,是由有向的边成对毗连的极点的荟萃。 当你在 TensorFlow 中运行代码时,计较图是以静态方法界说的。与外部天下的全部通讯都是通过 tf.Sessionobject 和 tf.Placeholder 执行,它们是在运行时会被外部数据替代的张量。譬喻,看看以下代码段: 下图是 TensorFlow 中运行代码之前以静态方法天生存较图的方法。计较图的焦点上风是能实现并行化或依靠驱动式调治(dependency driving scheduling),这能让逊?з度更快,更有服从。 相同于 TensorFlow,PyTorch 也有两个焦点模块:
可以在下图中看到,图会跟着执行进程而改变和执行节点,没有非凡的会话接口或占位符。整体而言,这个框架与 Python 说话的整合更细密,大大都时辰感受更当地化。因此,PyTorch 是更 Python 化的框架,而 TensorFlow 则感受完满是一种新说话。 按照你所用的框架,在软件规模有很大的差异。TensorFlow 提供了行使 TensorFlow Fold 库实现动态图的方法,而 PyTorch 的动态图是内置的。 2. 漫衍式实习 PyTorch 和 TensorFlow 的一个首要差别特点是数据并行化。PyTorch 优化机能的方法是操作 Python 对异步执行的当地支持。而用 TensorFlow 时,你必需手动编写代码,并微调要在特定装备上运行的每个操纵,以实现漫衍式实习。可是,你可以将 PyTorch 中的全部成果都复现到 TensorFlow 中,但这必要做许多事变。下面的代码片断展示了用 PyTorch 为模子实现漫衍式实习的简朴示例: 3. 可视化 (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |