加入收藏 | 设为首页 | 会员中心 | 我要投稿 河北网 (https://www.hebeiwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

「决战紫禁之巅」之深度学习框架篇:Keras VS PyTorch

发布时间:2019-06-26 19:23:23 所属栏目:建站 来源:机器之心编译
导读:TensorFlow 是许多科学家、工程师和开拓职员的首个深度进修框架。固然 TensorFlow 1.0 早在 2017 年 2 月就宣布了,但行使进程中对用户不太友爱。 已往几年里,Keras 和 PyTorch 日益成为广受用户接待的两种深度进修库,由于它们行使起来比 TensorFlow 简
副问题[/!--empirenews.page--]

TensorFlow 是许多科学家、工程师和开拓职员的首个深度进修框架。固然 TensorFlow 1.0 早在 2017 年 2 月就宣布了,但行使进程中对用户不太友爱。

已往几年里,Keras 和 PyTorch 日益成为广受用户接待的两种深度进修库,由于它们行使起来比 TensorFlow 简朴多了。

本文将别离对 Keras 和 PyTorch 的四个方面举办较量,你可以按照两种框架的是非势以及自身的必要选择个中一种。

一、Keras 和 PyTorch 简介

Keras 于 2015 年 3 月初次宣布,是可以或许在 TensorFlow、CNTK、Theano 或 MXNet 上运行的高级 API(或作为 TensorFlow 内的 tf.contrib)。Keras 的突出特点在于其易用性,它是迄今为止最轻易上手且可以或许快速运行的框架。另外,Keras 可以或许直观地界说神经收集,函数式 API 的行使令用户可以将层界说为函数。

PyTorch 于 2016 年 10 月宣布,由 Facebook AI 研究团队开拓,是专注于直接处理赏罚数组表达式的较初级别 API。与 Keras 对比,你可以或许拥有更强的机动度以及对 PyTorch 的节制,同时又不必要举办太多的声明式编程(declarative programming)。

「决斗紫禁之巅」之深度进修框架篇:Keras VS PyTorch

二、选择 Keras 照旧 PyTorch?

偶然,深度进修从颐魅者会纠结于应该行使哪一种框架,这凡是取决于小我私纪猱好。下面将先容 Keras 和 PyTorch 的几个方面比拟,你可据此做出本身的选择。

1. 界说模子的类 vs 函数

Keras 在界说深度进修模子时提供函数式 API。通过函数式 API,神经收集被界说为一组序列函数,然后一个接一个地获得应用。譬喻,函数界说层 1 的输出是函数界说层 2 的输入。

「决斗紫禁之巅」之深度进修框架篇:Keras VS PyTorch

在行使 PyTorch 时,用户将神经收集配置为一个扩展了 Torch 库中 torch.nn. 模块的类。与 Keras 相同,PyTorch 为用户提供作为组件的层,但因为这些层属于 Python 类,以是它们是类__init__() 要领中的引用,并通过类的 forward() 要领执行。

「决斗紫禁之巅」之深度进修框架篇:Keras VS PyTorch

对比而言,PyTorch 可以或许令你会见 Python 的全部种别特性,而不可是简朴的函数挪用。界说收集变得越发清楚,并且优雅。但假如你以为以最快的速率编写收集代码最为重要,则 Keras 对你来说越发易于行使。

2. 张量和计较图 vs 尺度阵列

对付一样平常措施员来说,Keras API 会潜匿大量的紊乱细节,界说收集层也很是直观。因而,你在默认配置下就足以入门。但当你想要实现一个很是先辈或「奇异的」模子时,才真正必要深入相识初级和本质的 TensorFlow。

但当你真正深入相识初级 TensorFlow 代码时,就会碰着一些挑衅。你必要确保全部矩阵乘法对齐。更不要想着将层输出打印出来了,由于你会在终端上打印出一个很好的张量界说(Tensor definition)。

相较于 Keras,PyTorch 在这些方面每每越发宽容。你只必要相识每个层的输入和输出巨细就可以了,而且 PyTorch 在这一点上做得很是好,你可以快速把握。你不必要构建抽象的计较图(其内部环境你在调试时无法看到)。

PyTorch 的另一个利益在于其滑腻性(smoothness),你可以在 Torch 张量和 Numpy 矩阵之间往返切换。但假如开拓者必要实现一些自界说内容,则 TF 张量和 Numpy 矩阵之间的切换也许会很贫困,这要求他们对 TensorFlow 有一个透彻相识。

现实上,PyTorch 的交互运算越发简朴,两步即可:将 Torch 张量(变量工具)转换成 Numpy,然后举办反向运算即可。

虽然,假如你不必要实现任何奇异的内容,则 Keras 也示意的很是好,由于你不会碰着任何 TensorFlow 障碍。但假如想要实现一些奇异的内容,则 PyTorch 也许会示意得越发滑腻。

3. 实习模子

「决斗紫禁之巅」之深度进修框架篇:Keras VS PyTorch

开始实习

操作 Keras 实习模子超等简朴!只必要一个简朴的.fit(),你就可以开启模子实习之旅。

「决斗紫禁之巅」之深度进修框架篇:Keras VS PyTorch

而操作 PyTorch 实习模子包括以下几个步调:

  • 每一批次的实习开始时初始化梯度
  • 在模子中运行前向撒播
  • 运行后向撒播
  • 计较丧失和更新权重

以是,就实习模子来说,PyTorch 较为繁琐。

「决斗紫禁之巅」之深度进修框架篇:Keras VS PyTorch

4. 节制 CPU vs GPU 模式

「决斗紫禁之巅」之深度进修框架篇:Keras VS PyTorch

我们必要更多算力。

假如你已经安装了 tensorflow-gpu,则在 Keras 中可以或许行使 GPU 而且会默认完成。然后,假如你想要将某些运算转移至 CPU,则可以以单行方法完成。

「决斗紫禁之巅」之深度进修框架篇:Keras VS PyTorch

但对付 PyTorch 来说,你必需显式地为每个 torch 张量和 numpy 变量启动 GPU。这样代码会较量紊乱。而且假如你想在 CPU 和 GPU 之间往返移动以执行差异运算,则很轻易堕落。

(编辑:河北网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读