График замораживания в pb в Tensorflow2 - PullRequest
1 голос
/ 26 сентября 2019

Мы развертываем множество наших моделей из 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")

    Который опять сохраняет несколько файлов: (.

1 Ответ

0 голосов
/ 26 сентября 2019

На данный момент я делаю это TF2 -> SavedModel (через keras.experimental.export_saved_model) -> frozen_graph.pb (через инструменты freeze_graph, которые могут принимать SavedModel в качестве входных данных).Я не знаю, если это «рекомендуемый» способ сделать это, хотя.

Кроме того, я до сих пор не знаю, как загрузить обратно замороженную модель и выполнить вывод «путь TF2» (иначеграфики, сеансы и т. д.).

Вы также можете взглянуть на keras.save_model('path', save_format='tf'), который, кажется, создает файлы контрольных точек (однако вам все равно нужно их заморозить, поэтому я лично считаю, что путь к сохраненной модели лучше)

...