正式支援Transformer與TensorBoard,PyTorch 1.2新鮮出爐

AIBigbull2050發表於2019-08-23

機器之心報導

參與:李亞洲、杜偉

在 PyTorch 上,你可以像呼叫卷積一樣呼叫 Transformer 了。

PyTorch 作為 Facebook 開發和維護的一個開源框架,近來的發展勢頭相當強勁。自 2017 年初首發以來,PyTorch 靈活、動態的程式設計環境及對使用者友好的介面使其非常適用於快速實驗,因此在社群內迅速發展壯大。

2018 年 12 月,PyTorch 1.0 正式版釋出,解決了包括可重用、效能、程式語言和可擴充套件性等在內的一系列問題。

今日,PyTorch 釋出最新版本,做了一系列更新,包括正式支援 Transformer、TensorBoard 等。

正式支援 Transformer 與 TensorBoard

基於論文《Attention is All You Need》,PyTorch 1.2 版本加入了標準的 nn.Transformer 模組。nn.Transformer 模組完全依賴注意機制描述輸入和輸出之間的全域性依賴關係。nn.Transformer 模組的元件是單獨設計的,以便於被分開使用。例如,沒有更大的 nn.Transformer 的情況下,nn.TransformerEncoder 可被自身使用。新的 API 包括:

現在,簡單的輸入 from torch.untils.tensorboard import SummaryWriter 就能啟動 TensorBoard,它已經不再是實驗版了,這就表示 PyTorch 終於正式支援 TensorBoard 啦。

一旦我們安裝了 TensorBoard,PyTorch 的這項新 API 就會將模型和指標記錄到 TensorBoard UI 的目錄中,並進行視覺化。它對所有基於 PyTorch、Caffe 2 的模型和張量都支援數量、影像、直方圖、圖和嵌入視覺化。

其它重要更新

新的 TorchScript API

PyTorch 1.2 版本為 nn.Modules 轉換成 ScriptModules 提供了新的、易用的 API。簡單用例如下:

torch.jit.script() 將嘗試以遞迴形式編譯指定的 nn.Module,其中包括呼叫自 forward() 的任何子模組或方法。相關變更情況以及如何遷移詳見《migration guide》。

提升 TorchScript Python 語言覆蓋範圍

在 PyTorch 1.2 版本中,TorchScript 顯著提升了自身對 Python 語言結構和 Python 標準庫的支援。亮點包括如下:

  • 提前返回、終止和繼續;
  • 基於迭代器的結構,如 for..in 迴路、zip() 和 enumerate();
  • NamedTuples;
  • 支援 math 和 string 庫
  • 支援大多數 Python 內部函式

擴充套件 Onnx 匯出

透過與微軟合作,PyTorch 1.2 版本全面支援匯出 ONNX Opset 版本 7 (V1.2)、版本 8(v1.3)、版本 9(v1.4) 以及版本 10 (v1.5)。PyTorch 1.2 還增強了常量摺疊通道(constant folding pass),以支援 ONNX 最新可用版本 Opset 10。此外,使用者現在可以註冊自己的符號(symbolic)以匯出自定義操作,同時可以在匯出時指定輸入的動態維度。重大改進之處如下:

  • 支援多個 Opsets 版本,包括 Opset 10 版本中匯出 dropout、slice、flip 和 interpolate;
  • 改進 ScriptModule,包括支援多輸出、張量 factory 以及作為輸入和輸出的元組;
  • 支援 10 多個額外的 PyTorch 運算子,包括匯出自定義運算子。

github 參考連結:pytorch/pytorch/releases

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69946223/viewspace-2654717/,如需轉載,請註明出處,否則將追究法律責任。

相關文章