正式支持Transformer與TensorBoard,PyTorch 1.2新鮮出爐
機器之心報道
參與:李亞洲、杜偉
在 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
※PyTorch深度概率推斷工具Brancher,掌握ML和Python基礎即可上手
※深度強化學習入門難?這份資料手把手教會你
TAG:機器之心 |