簡體   English   中英

項目組織為 Tensorflow.keras。 應該有一個子類 tf.keras.Model 嗎?

[英]Project organization with Tensorflow.keras. Should one subclass tf.keras.Model?

我正在使用 Tensorflow 1.14 和tf.keras API 來構建多個(> 10)不同的神經網絡。 (我也對使用 Tensorflow 2 回答這個問題感興趣)。 我想知道我應該如何組織我的項目。

我使用tf.keras.estimator.model_to_estimator和 Tensorboard 將 keras 模型轉換為估計器以進行可視化。 我有時也使用model.summary() 我的每個模型都有一些(> 20)超參數,並將三種類型的輸入數據中的一種作為輸入。 我有時會使用超參數優化,因此我經常手動刪除模型並在嘗試下一組超參數之前使用tf.keras.backend.clear_session()

目前我正在使用將超參數作為 arguments 並返回各自編譯的 keras model 的函數以轉換為估計器。 我使用三種不同的“Main_Datatype.py”腳本來訓練三種不同輸入數據類型的模型。 所有數據都是從 .tfrecord 文件加載的,並且每種數據類型都有一個輸入 function,所有估計器都使用該輸入,以該類型的數據作為輸入。 我在主腳本中的模型(即返回模型的函數)之間切換。 我還有一些構建塊,它們是多個 model 的一部分,為此我使用幫助函數返回它們,使用 Keras 功能 API 拼湊最終結果。

不同模型的輕微不兼容性開始讓我感到困惑,我決定使用類來組織項目。 I'm planing to make a class for each model that keeps track of hyperparameters and correct naming of each model and its model directory. 但是,我想知道在 Tensorflow 中是否有既定或推薦的方法來執行此操作。

問:我應該tf.keras.Model而不是使用函數來構建模型或封裝它們的 python 類嗎? 子類化 keras.Model 會破壞(或需要大量工作才能啟用)我與 keras 估計器和張量板一起使用的任何功能嗎? 我已經看到人們在使用自定義 Model 類時遇到了很多問題,我有點不願意投入工作,只是發現它對我不起作用。 您對如何更好地組織我的項目有其他建議嗎?

非常感謝您提前。

僅在絕對需要時才進行子類化。 我個人更喜歡遵循以下實施順序。 如果您正在設計的 model 的復雜性,使用前兩個選項無法實現,那么子類化當然是唯一剩下的選項。

  1. tf.keras 順序 API
  2. tf.keras 功能 API
  3. 子類 tf.keras.Model

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM