Мы развертываем множество наших моделей из TF1, сохраняя их путем замораживания графиков:
tf.train.write_graph(self.session.graph_def, some_path)
# get graph definitions with weights
output_graph_def = tf.graph_util.convert_variables_to_constants(
self.session, # The session is used to retrieve the weights
self.session.graph.as_graph_def(), # The graph_def is used to retrieve the nodes
output_nodes, # The output node names are used to select the usefull nodes
)
# optimize graph
if optimize:
output_graph_def = optimize_for_inference_lib.optimize_for_inference(
output_graph_def, input_nodes, output_nodes, tf.float32.as_datatype_enum
)
with open(path, "wb") as f:
f.write(output_graph_def.SerializeToString())
, а затем загружая их через:
with tf.Graph().as_default() as graph:
with graph.device("/" + args[name].processing_unit):
tf.import_graph_def(graph_def, name="")
for key, value in inputs.items():
self.input[key] = graph.get_tensor_by_name(value + ":0")
Мы хотим сохранить модели TF2 вПодобный способ.Один файл protobuf, который будет включать график и веса.Как я могу добиться этого?
Я знаю, что есть несколько способов сохранения:
keras.experimental.export_saved_model(model, 'path_to_saved_model')
, который является экспериментальным и создает несколько файлов: (.
model.save('path_to_my_model.h5')
с сохранением формата h5: (.
tf.saved_model.save(self.model, "test_x_model")
Который опять сохраняет несколько файлов: (.