所处位置:官网首页 > 新闻中心 > 公司新闻 >
TensorFlow、PyTorch、Keras:NLP框架哪家强
日期:2019-12-27 19:19     来源:

在对k8凯发首页TensorFlow、PyTorch和Keras做功用比照之前,先来了解一些它们各自的非竞争性柔性特色吧。


非竞争性特色


下文介绍了TensorFlow、PyTorch和Keras的几个不同之处,便于读者对这三个结构有开始了解。列出这些差异的要点不在于对三者做比较,而在于做一个开始介绍。

TensorFlow

· 开发者:Google

· 2017年1月发布1.0版别


PyTorch

· 开发者:Facebook

· 2018年10月发布1.0版别

· 根据Torch开发


Keras

· 是一个高档API,降低了深度学习结构的杂乱程度

· 能够在其他深度学习API,如TensorFlow、Theano和CNTK上运转

· 自身并不是一个库


竞争性差异

下面将介绍这三个结构愈加具有竞争性的差异。本文侧重剖析比较了这三个结构用于天然言语处理时的不同之处。


1. 可用的RNN类型

当试图用深度学习方法来处理NLP问题时,循环神经网络是开发者最常用的专业架构。因而,本文也挑选从这一视点切入来比较TensorFlow、PyTorch和Keras结构。

本文比较的三种结构都具有可用于构建简略RNN以及更杂乱的RNN——门控循环单元和长短时记忆网络的模块。


PyTorch:

PyTorch供给2种不同层次的类别用于构建循环网络:

· 多层次类别,包括nn.RNN、nn.GRU和nn.LSTM。这些类别的基类可用于表明深度双向循环神经网络。

· 单元层类别,包括nn.RNNCell、nn.GRUCell和nn.LSTMCell。这些类别的基类仅可用于表明单个单元,即处理输入数据一个时间步长的单元。

因而,当神经网络中不需求太多定制时,多层次类别对单元层类别来说,就像是不错的包装类。

此外,构建一个双向RNN十分简略,只需在多层次类别中将双向实参设置为True就能够了。


TensorFlow:

TensorFlow供给tf.nn.rnn_cell模块用于构建标准RNN。

tf.nn.rnn_cell模块中最重要的类别包括:

· 单元层类别:用于界说RNN的单个单元,即BasicRNNCell、GRUCell和LSTMCell。

· 多RNN单元类别:用于仓库多个单元,以创立深度RNN。

· 随机失活包装类别:用于履行dropout正则化。


Keras:

Keras库供给的循环层包括:

· 简略RNN——全衔接RNN,其输出被反应到输入中

· GRU——门控循环单元层

· LSTM——长短时记忆层

TensorFlow、PyTorch和Keras都具有构建常见RNN架构的内置功用。它们的差异在于接口不同。

Keras的接口十分简略,包括一小串界说明确的参数,能够使上述类别的履行愈加简略。作为一个能够在TensorFlow上运转的高档API,Keras使得TensorFlow愈加简略。TensorFlow和PyTorch两者的灵敏性差不多,可是后者的接口愈加简洁明了。


2. TensorFlow、PyTorch、Keras易用性比照

TensorFlow常因其规划狭小的API而被诟病。比较之下,PyTorch对用户则更为友爱,运用也愈加简略。总归,PyTorch与Python言语的交融更为严密,也愈加天然。而在TensorFlow结构中编写程序时,程序员常感到自己与模型之间好像隔着一堵砖墙,只留下了几个洞孔用于沟通。


下文将评论并比较更多影响这三个结构易用性的要素:

· 静态核算图vs动态核算图:

核算图是NLP中十分重要的一个要素。TensorFlow运用静态核算图,PyTorch则运用动态核算图。

这也就意味着在TensorFlow中,需求先静态界说核算图,再运转模型。一切与外界的沟通都经过tf.Session目标和tf.Placeholder进行,而这两个张量在运转时库中都会被外部数据替代。

PyTorch中的核算图则更为重要和灵敏。用户能够根据需求界说、改动和履行节点,无需依靠特别的会话接口或占位符。

RNN静态图的输入序列长度通常是固定的。也就是说,开发一个英文语句情感剖析模型必须将语句长度固定到某个最大值,并用0填充一切过短的序列。这真的很不方便。


· 调试:

因为PyTorch在运转时库中界说核算图,所以用户能够运用自己喜欢的调试东西,如pdb、ipdb、PyCharm debugger、old trusty print statements等。

但上述状况并不适用于TensorFlow。在TensorFlow中,用户能够挑选运用一个名为tfdbg的特别东西,用于评价运转时库的TensorFlow表达式和阅读会话效果域中的一切张量和操作。可是,这一东西明显不能调试python代码。所以用户还必须再运用pdb进行调试。

· 社区规划:

和PyTorch比较,TensorFlow愈加老练,其社区规划比PyTorch和Keras的社区规划加起来还要大得多,用户基数的增加也比PyTorch和Keras要快。

这也就意味着:

· 有更大规划的社区,如StackOverFlow上的社区,协助你处理问题

· 有更多的线上学习材料,如博客、视频、课程等

· 能更快把握最新的深度学习技能

NLP的未来


循环神经网络作为用作NLP使命的专业架构现已有适当长的一段时间了,但这一状况并不会长时间不变。一个最新开发的根据注意力机制的改换模型现已在研究者之间盛行开来。


这一模型现已替代RNN成为了新的NLP标准。一些评论家以为,Transformer将会成为2019年干流NLP深度学习架构。


在这场竞赛中,TensorFlow好像领先于别的两个结构:

· 首要,注意力架构是Google自己研制的。

· 其次,只要TensorFlow有Transformer稳定版架构。

但这并不是说PyTorch现已远远地落在了后边。Huggingface的GitHub现已发布了许多预练习的PyTorch transformer模型:https://github.com/huggingface/pytorch-transformers。


别的,Google最近发布的TensorFlow 2.0很可能将带来天翻地覆的改变!


具体来说:


· Keras将会成为TensorFlow的高档API,其功用将会被扩展,使得用户能够在tf.keras上直接运用TensorFlow的最新功用。任一规划的TensorFlow及其硬件设备都将具有Keras的简便性。

· TensorFlow 2.0默以为动态图机制。用户乃至在eager context中也能够运用核算图,这将使调试和原型规划更为简略。TensorFlow运转时库则会在后台调控功能和规划。

· TensorBoard会和Keras整合——这在现在无法完成。

所以,本文猜测,TensorFlow 2.0将会消除简直一切TensorFlow的缺乏。TensorFlow作为一切深度学习使命专业结构的位置将会得到稳固,乃至变得更好!

留言 点赞 重视

咱们一同共享AI学习与开展的干货

编译组:王努铱、杨月

相关链接:

https://dzone.com/articles/tensorflow-vs-pytorch-vs-keras-for-nlp

如需转载,请后台留言,恪守转载标准