當前位置:
首頁 > 新聞 > Keras作者:TF 2.0+Keras深度學習研究你需要了解的12件事

Keras作者:TF 2.0+Keras深度學習研究你需要了解的12件事

新智元報道

來源:Twitter

作者:Fran?ois Chollet 編輯:肖琴

【新智元導讀】Keras 作者 Fran?ois Chollet 今天發表了一系列推文,如果你使用 TensorFlow 2.0 Keras 做深度學習研究,這裡有你需要知道的一切。

TensorFlow 2.0 前幾天新鮮出爐,Alpha 版可以搶先體驗。新版本主打簡單易用可擴展,大大簡化了 API。

Keras 作者 Fran?ois Chollet 今天發表了一系列推文,用12個示例解釋了使用TensorFlow 2.0 Keras 的一些重要技巧。

如果你使用TF 2.0 Keras做深度學習研究,這裡有你需要知道的一切。

Keras 作者 Fran?ois Chollet

1)你需要知道的第一個類是 「Layer」。一個 Layer 封裝了一個狀態 (權重) 和一些計算 (在 「call」 方法中定義)。

2)「add_weight」 方法提供了創建權重的快捷方式。

3)最好在一個單獨的 「build」 方法中創建權重,使用你的 layer 看到的第一個輸入的形狀來調用該方法。這種模式讓我們不用必須指定』 input_dim 『:

4)你可以通過在 GradientTape 中調用 layer 來自動檢索該層權重的梯度。使用這些梯度,你可以手動或使用優化器對象來更新 layer 的權重。當然,你也可以在使用梯度之前修改它們。

5)由 layers 創建的權重可以是可訓練的,也可以是不可訓練的。是否可訓練可以在 layer 的屬性 「trainable_weights」 和 「non_trainable_weights」 中看到。比如,這是一個具有不可訓練權重的層:

6)層可以遞歸地嵌套,以創建更大的計算塊。每一層將跟蹤其子層的權重 (包括可訓練的和不可訓練的)。

7)層會在前向傳遞時創建損失。這對於正則化損失特別有用。子層創建的損失由父層遞歸跟蹤。

8)這些損失在每次向前傳遞開始時由頂層清除 —— 它們不會累積。「layer.losses」 總是只包含在 「最後一次」 前向傳遞時產生的損失。在編寫訓練循環時,你通常需要將這些損失累加起來使用。

9)TF 2.0 默認情況下是 eager。但是通過將計算編譯成靜態圖,將能夠獲得更好的性能。靜態圖是研究人員最好的朋友!你可以通過將其包裝在一個 tf.function 中來編譯任何函數:

10)有些層,特別是 「BatchNormalization」 層和 「退 Dropout」 層,在訓練和推理過程中會表現出不同的行為。對於這樣的層,標準做法是在 「call」 方法中加入一個 「training」(boolean) 參數。

11)有很多內置層是可用的,從 Dense 層到 Conv2D 層到 LSTM 層,再到 Conv2DTranspose 或 ConvLSTM2D。你要學會好好重用這些內置函數。

12)要構建深度學習模型,你不必總是使用面向對象編程。到目前為止,我們看到的所有層都可以按函數組合,就像這樣 (我們稱之為 「Functional API」):

函數式 API 往往比 subclassing 更簡潔,並且還有其他優點。

了解關於 Functional API 的更多信息:

https://www.tensorflow.org/alpha/guide/keras/functional

但是,請注意,函數式 API 只能用於定義層的 DAGs—— 遞歸網路應該定義為 「Layer」 子類。

在研究工作中,你可能經常發現自己混合匹配了 OO 模型和函數式模型。

以上,就是使用 TensorFlow 2.0 Keras 來重新實現大多數深度學習研究論文所需要的全部內容!

現在讓我們來看一個非常簡單的例子:hypernetworks

hypernetwork 是一個深度神經網路,它的權重由另一個網路 (通常較小) 生成。

讓我們實現一個非常簡單的 hypernetwork:我們將使用前面定義的 「Linear」 層,並使用它生成另一個 「Linear」 層。

另一個快速示例:以任何一種風格實現 VAE,可以是 subclassing,或者函數式 API。找到最適合你的方法吧!

subclassing

Functional API

最後,你可以在這個 Colab 筆記本中使用這些代碼示例:

https://colab.research.google.com/drive/17u-pRZJnKN0gO5XZmq8n5A2bKGrfKEUg


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 新智元 的精彩文章:

谷歌開源GPipe:單個加速器處理參數3.18億,速度提升25倍
吳恩達首秀小公主:歡迎來到AI世界

TAG:新智元 |