乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      TensorFlow、PyTorch、Keras:NLP框架哪家強

       taotao_2016 2019-09-30
      全文共

      3412

      字,預(yù)計學習時長

      7

      分鐘

      TensorFlow、PyTorch、Keras:NLP框架哪家強

      在對TensorFlow、PyTorch和Keras做功能對比之前,先來了解一些它們各自的非競爭性柔性特點吧。

      TensorFlow、PyTorch、Keras:NLP框架哪家強

      非競爭性特點

      下文介紹了TensorFlow、PyTorch和Keras的幾個不同之處,便于讀者對這三個框架有初步了解。列出這些區(qū)別的重點不在于對三者做比較,而在于做一個初步介紹。

      TensorFlow

      · 開發(fā)者:Google

      · 2017年1月發(fā)布1.0版本

      PyTorch

      · 開發(fā)者:Facebook

      · 2018年10月發(fā)布1.0版本

      · 基于Torch開發(fā)(Torch是基于Lua開發(fā)的另一個深度學習框架)

      Keras

      · 是一個高級API,降低了深度學習框架的復(fù)雜程度

      · 可以在其他深度學習API,如TensorFlow、Theano和CNTK上運行

      · 本身并不是一個庫

      TensorFlow、PyTorch、Keras:NLP框架哪家強

      競爭性區(qū)別

      TensorFlow、PyTorch、Keras:NLP框架哪家強

      下面將介紹這三個框架更加具有競爭性的區(qū)別。本文著重分析比較了這三個框架用于自然語言處理(Natural Language Processing,NLP)時的不同之處。

      1. 可用的RNN類型

      當試圖用深度學習方法來解決NLP問題時,循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Networks,RNNs)是開發(fā)者最常用的專業(yè)架構(gòu)。因此,本文也選擇從這一角度切入來比較TensorFlow、PyTorch和Keras框架。

      本文比較的三種框架都具有可用于構(gòu)建簡單RNN以及更復(fù)雜的RNN——門控循環(huán)單元(Gated Recurrent Units,GRU)和長短時記憶網(wǎng)絡(luò)(Long Short Term Memory networks,LSTM)的模塊。

      PyTorch:

      PyTorch提供2種不同層次的類別(class)用于構(gòu)建循環(huán)網(wǎng)絡(luò):

      · 多層次類別(Multi-layer classes),包括nn.RNN、nn.GRU和nn.LSTM。這些類別的基類(Object)可用于表示深度雙向循環(huán)神經(jīng)網(wǎng)絡(luò)。

      · 單元層類別(Cell-level classes),包括nn.RNNCell、nn.GRUCell和nn.LSTMCell。這些類別的基類僅可用于表示單個單元(如簡單RNN、LSTM及GRU的單元),即處理輸入數(shù)據(jù)一個時間步長的單元。

      因此,當神經(jīng)網(wǎng)絡(luò)中不需要太多定制時,多層次類別對單元層類別來說,就像是不錯的包裝類(wrapper)。

      此外,構(gòu)建一個雙向RNN非常簡單,只需在多層次類別中將雙向?qū)崊⒃O(shè)置為True就可以了。

      TensorFlow:

      TensorFlow提供tf.nn.rnn_cell模塊用于構(gòu)建標準RNN。

      tf.nn.rnn_cell模塊中最重要的類別包括:

      · 單元層類別(Cell level classes):用于定義RNN的單個單元,即BasicRNNCell、GRUCell和LSTMCell。

      · 多RNN單元類別(MultiRNNCell class):用于堆棧多個單元,以創(chuàng)建深度RNN。

      · 隨機失活包裝類別(DropoutWrapper class):用于執(zhí)行dropout正則化。

      Keras:

      Keras庫提供的循環(huán)層包括:

      · 簡單RNN——全連接RNN,其輸出被反饋到輸入中

      · GRU——門控循環(huán)單元層

      · LSTM——長短時記憶層

      TensorFlow、PyTorch和Keras都具有構(gòu)建常見RNN架構(gòu)的內(nèi)置功能。它們的區(qū)別在于接口不同。

      Keras的接口非常簡單,包含一小串定義明確的參數(shù),能夠使上述類別的執(zhí)行更加簡單。作為一個能夠在TensorFlow上運行的高級API,Keras使得TensorFlow更加簡單。TensorFlow和PyTorch兩者的靈活性差不多,但是后者的接口更加簡潔明了。

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

      TensorFlow常因其范圍狹小的API而被詬病。相比之下,PyTorch對用戶則更為友好,使用也更加簡單??傊?,PyTorch與Python語言的融合更為緊密,也更加自然。而在TensorFlow框架中編寫程序時,程序員常感到自己與模型之間仿佛隔著一堵磚墻,只留下了幾個洞孔用于交流。

      下文將討論并比較更多影響這三個框架易用性的因素:

      · 靜態(tài)計算圖vs動態(tài)計算圖:

      計算圖是NLP中非常重要的一個因素。TensorFlow使用靜態(tài)計算圖,PyTorch則使用動態(tài)計算圖。

      這也就意味著在TensorFlow中,需要先靜態(tài)定義計算圖,再運行模型。所有與外界的溝通都通過tf.Session對象和tf.Placeholder進行,而這兩個張量在運行時庫中都會被外部數(shù)據(jù)替代。

      PyTorch中的計算圖則更為重要和靈活。用戶可以根據(jù)需要定義、改變和執(zhí)行節(jié)點,無需依賴特殊的會話接口或占位符。

      RNN靜態(tài)圖的輸入序列長度通常是固定的。也就是說,開發(fā)一個英文句子情感分析模型必須將句子長度固定到某個最大值,并用0填充所有過短的序列。這真的很不方便。

      · 調(diào)試:

      由于PyTorch在運行時庫中定義計算圖,所以用戶可以使用自己喜愛的調(diào)試工具,如pdb、ipdb、PyCharm debugger、old trusty print statements等。

      但上述情況并不適用于TensorFlow。在TensorFlow中,用戶可以選擇使用一個名為tfdbg的特殊工具,用于評估運行時庫的TensorFlow表達式和瀏覽會話作用域中的所有張量和操作。但是,這一工具顯然不能調(diào)試python代碼。所以用戶還必須再使用pdb進行調(diào)試。

      · 社區(qū)規(guī)模:

      和PyTorch相比,TensorFlow更加成熟,其社區(qū)規(guī)模比PyTorch和Keras的社區(qū)規(guī)模加起來還要大得多,用戶基數(shù)的增長也比PyTorch和Keras要快。

      這也就意味著:

      · 有更大規(guī)模的社區(qū),如StackOverFlow上的社區(qū),幫助你解決問題

      · 有更多的線上學習資料,如博客、視頻、課程等

      · 能更快掌握最新的深度學習技術(shù)

      NLP的未來

      TensorFlow、PyTorch、Keras:NLP框架哪家強

      循環(huán)神經(jīng)網(wǎng)絡(luò)作為用作NLP任務(wù)的專業(yè)架構(gòu)已經(jīng)有相當長的一段時間了,但這一情況并不會長期不變。一個最新開發(fā)的基于注意力機制的變換模型(transformer model)已經(jīng)在研究者之間流行開來。

      這一模型已經(jīng)代替RNN成為了新的NLP標準。一些評論家認為,Transformer將會成為2019年主流NLP深度學習架構(gòu)。

      在這場比賽中,TensorFlow似乎領(lǐng)先于另外兩個框架:

      · 首先,注意力架構(gòu)是Google自己研發(fā)的。

      · 其次,只有TensorFlow有Transformer穩(wěn)定版架構(gòu)。

      但這并不是說PyTorch已經(jīng)遠遠地落在了后面。Huggingface的GitHub已經(jīng)發(fā)布了很多預(yù)訓練的PyTorch transformer模型:https://github.com/huggingface/pytorch-transformers。

      另外,Google最近發(fā)布的TensorFlow 2.0很可能將帶來翻天覆地的變化!

      具體來說:

      · Keras將會成為TensorFlow的高級API,其功能將會被擴展,使得用戶能夠在tf.keras上直接使用TensorFlow的最新功能。任一范圍的TensorFlow及其硬件設(shè)備都將具備Keras的簡便性。

      · TensorFlow 2.0默認為動態(tài)圖機制(eager execution)。用戶甚至在eager context中也可以使用計算圖,這將使調(diào)試和原型設(shè)計更為簡單。TensorFlow運行時庫則會在后臺調(diào)控性能和規(guī)模。

      · TensorBoard會和Keras整合——這在目前無法實現(xiàn)。

      所以,本文猜想,TensorFlow 2.0將會消除幾乎所有TensorFlow的不足。TensorFlow作為所有深度學習任務(wù)專業(yè)框架的地位將會得到鞏固,甚至變得更好!

      TensorFlow、PyTorch、Keras:NLP框架哪家強

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多