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
-
API
+關注
關注
2文章
1505瀏覽量
62183 -
深度學習
+關注
關注
73文章
5507瀏覽量
121299 -
tensorflow
+關注
關注
13文章
329瀏覽量
60545
原文標題:Keras作者:TF 2.0+Keras深度學習研究你需要了解的12件事
文章出處:【微信號:AI_era,微信公眾號:新智元】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論