[英]How to detect tf/keras model objects automatically
我正在為我們的機器學習平台https://iko.ai支持自動 model 檢測/記錄 Keras/Tensorflow 模型,我有一些問題:
我們可以通過哪些不同的方式來定義 tf/keras model?
tf.keras.Model
tf.Estimator
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.