繁体   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