У меня есть модель Keras (последовательная), которую можно сохранить с помощью настраиваемых определений подписи в Tensorflow 1.13 следующим образом:
from tensorflow.saved_model.utils import build_tensor_info
from tensorflow.saved_model.signature_def_utils import predict_signature_def, build_signature_def
model = Sequential() // with some layers
builder = tf.saved_model.builder.SavedModelBuilder(export_path)
score_signature = predict_signature_def(
inputs={'waveform': model.input},
outputs={'scores': model.output})
metadata = build_signature_def(
outputs={'other_variable': build_tensor_info(tf.constant(1234, dtype=tf.int64))})
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
builder.add_meta_graph_and_variables(
sess=sess,
tags=[tf.saved_model.tag_constants.SERVING],
signature_def_map={'score': score_signature, 'metadata': metadata})
builder.save()
Миграция модели на TF2 keras была крутой :), но я не могу понять, как сохранить модель с той же подписью, что и выше. Что мне следует использовать: новый tf.saved_model.save()
или tf.keras.experimental.export_saved_model()
? Как следует написать приведенный выше код в TF2?
Ключевые требования:
- Модель имеет подпись очков и подпись метаданных.
- Подпись метаданных содержит 1 или несколько констант.