簡體   English   中英

如何自動檢測tf/keras model對象

[英]How to detect tf/keras model objects automatically

我正在為我們的機器學習平台https://iko.ai支持自動 model 檢測/記錄 Keras/Tensorflow 模型,我有一些問題:

  • 我們可以通過哪些不同的方式來定義 tf/keras model?

    1. tf.keras.Model
    2. tf.Estimator
    3. tensorflow_estimator
  • 還有其他我不知道的方法嗎? 為什么有這么多方法可以做同樣的事情?

  • 保存/加載它們的正確功能是什么?

  • 我們如何將 TF/Keras model 實例與其他非模型對象區分開來? 我希望能夠編寫一個 function 檢查 object 是否是 TF/Keras model,類似

def is_tf_or_keras_model(obj):
    # check somehow if the obj is a TF/Keras model
    pass

關於問題1和2:

表示神經網絡 model 的另一種方法是使用tf.keras.Sequential 它允許您輕松創建一個遵循順序結構的 model,例如:

import tensorflow as tf
# tf.__version__ == 2.4

model_seq = tf.keras.Sequential()
model_seq.add(tf.keras.Input(shape=(64,1)))
model_seq.add(tf.keras.layers.Conv1D(32, 2, activation='relu'))
model_seq.add(tf.keras.layers.Dense(16, activation='relu'))
model_seq.add(tf.keras.layers.Dense(4, activation='softmax'))

這與使用tf.keras功能 API 相同。這允許構建不遵循順序結構的更復雜的網絡,但當然您仍然可以構建順序模型:

i = tf.keras.Input(shape=(64,1))
x = tf.keras.layers.Conv1D(32, 2, activation='relu')(i)
x = tf.keras.layers.Dense(16, activation='relu')(x)
x = tf.keras.layers.Dense(4, activation='softmax')(x)
model_func = tf.keras.Model(inputs=i, outputs=x)

tf.estimator.Estimator用於訓練 prebuilt.networks,因此您只需定義一些超參數值並開箱即用地訓練 model。

總之,用於構建 model 的方法取決於 .network 的復雜程度。

關於問題3:

tf.keras 實現允許您保存 model 的權重 ( model.save_weights ) 或保存整個 model ( model.save )。 要在之后加載 model 權重,您需要首先創建 model,遵循用於訓練這些權重的 model 的相同結構。

關於問題4:

model_classes = [tf.keras.Model, keras.Model, tf.estimator.Estimator]

def is_keras_or_tf_model(obj, model_classes):
    return isinstance(obj, model_clases)

我在這里所說的全部都在TensorFlow文檔中。

暫無
暫無

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

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