[英]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.