TensorFlow、PyTorch 和 Keras

1. 可用的 RNN 类型

在寻找 NLP 问题的深度学习解决方案时,循环神经网络 (RNN) 是开发人员最流行的首选架构。因此,从这个角度来比较框架是有意义的。

所有正在考虑的框架都具有允许我们创建简单 RNN及其更进化的变体的模块——门控循环单元 ( GRU ) 和长短期记忆 ( LSTM ) 网络。

PyTorch

PyTorch 提供了 2 个级别的类来构建此类循环网络:

  • 多层类 — nn.RNN、nn.GRUnn.LSTM。 这些类的对象能够表示深度双向循环神经网络。
  • 单元级类 — nn.RNNCell、nn.GRUCellnn.LSTMCell。 这些类的对象只能表示一个可以处理输入数据的一个时间步的单元(同样是一个简单的 RNN 或 LSTM 或 GRU 单元)。

因此,当我们不想在神经网络中进行太多定制时,多层类就像单元级类的一个很好的包装器。

此外,使 RNN 成为双向就像在多层类中将双向参数设置为True一样简单!

TensorFlow

TensorFlow 为我们提供了tf.nn.rnn_cell 模块来帮助我们满足标准 RNN 需求。

该模块中一些最重要的类tf.nn.rnn_cell如下:

  • 单元级别类 用于定义 RNN 的单个单元,即 —BasicRNNCellGRUCellLSTMCell
  • MultiRNNCell 类 用于堆叠各种单元以创建深度 RNN
  • DropoutWrapper类 用于实现dropout正则化

喀拉斯

以下是Keras 库中提供的循环层。其中一些层是:

  • SimpleRNN - 全连接 RNN,其中输出将反馈到输入
  • GRU——门控循环单元层
  • LSTM——长短期记忆层

TensorFlow、PyTorch 和 Keras 具有内置功能,使我们能够创建流行的 RNN 架构。区别在于它们的界面。

Keras 有一个简单的接口,其中包含一小部分定义良好的参数,这使得上述类易于实现。作为 TensorFlow 之上的高级 API,我们可以说 Keras 让 TensorFlow 变得简单。虽然 PyTorch 提供了与 TensorFlow 类似的灵活性,但它的界面更加简洁。

当我们讨论这个主题时,让我们根据每个框架的易用性进行更深入的比较研究。

2. 易用性:TensorFlow、PyTorch、Keras

TensorFlow 经常因其不全面的 API 而受到谴责。PyTorch 更加友好且易于使用。总体而言,PyTorch 框架与 Python 语言的集成更加紧密,大多数时候感觉更加原生。当您在 TensorFlow 中编写时,有时您会感觉您的模型位于一堵砖墙后面,上面有几个小孔可供通信。 

让我们根据三者的易用性来讨论比较这三个因素的更多因素:

静态计算图与动态计算图

这个因素在 NLP 中尤其重要。TensorFlow 使用静态图进行计算,而 PyTorch 使用动态计算图。

这意味着在 Tensorflow 中,您可以在模型运行之前静态定义计算图。与外部世界的所有通信都是通过 tf.Session 对象和 tf.Placeholder 执行的,它们是在运行时将被外部数据替换的张量。

在 PyTorch 中,事情变得更加命令式和动态:您可以随时定义、更改和执行节点;没有特殊的会话界面或占位符。

在 RNN 中,对于静态图,输入序列长度将保持不变。这意味着,如果您开发英语句子的情感分析模型,则必须将句子长度固定为某个最大值,并用零填充所有较小的序列。不太方便吧?

调试

由于 PyTorch 中的计算图是在运行时定义的,因此您可以使用我们最喜欢的 Python 调试工具,例如 pdb、ipdb、PyCharm 调试器或旧的可信打印语句。

TensorFlow 的情况并非如此。您可以选择使用名为tfdbg的特殊工具,它允许您在运行时评估 TensorFlow 表达式并浏览会话范围内的所有张量和操作。当然,您将无法使用它调试任何Python代码,因此有必要单独使用pdb。

  • 社区规模:

Tensorflow 比 PyTorch 更成熟。与 PyTorch 和 Keras 的总和相比,它拥有更大的社区。其用户群的增长速度超过 PyTorch 和 Keras。

所以这意味着:

  • 更大的 StackOverFlow 社区可以帮助您解决问题
  • 更大的在线学习材料集——博客、视频、课程等。
  • 更快地采用最新的深度学习技术
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wouderw

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值