В настоящее время я пытаюсь экспортировать обучаемую модель TensorFlow в качестве файла ProtoBuf, чтобы использовать ее с TensorFlow C++ API на Android. Поэтому я использую скрипт freeze_graph.py
.TensorFlow freeze_graph.py: Имя «save/Const: 0» относится к тензору, который не существует
Я экспортировал свою модель с помощью tf.train.write_graph
:
tf.train.write_graph(graph_def, FLAGS.save_path, out_name, as_text=True)
и я использую контрольно-пропускной пункт сохраняется с tf.train.Saver
.
Я вызываю freeze_graph.py
, как описано в начале сценария. После компиляции, я бегу
bazel-bin/tensorflow/python/tools/freeze_graph \
--input_graph=<path_to_protobuf_file> \
--input_checkpoint=<model_name>.ckpt-10000 \
--output_graph=<output_protobuf_file_path> \
--output_node_names=dropout/mul_1
Это дает мне следующее сообщение об ошибке:
TypeError: Cannot interpret feed_dict key as Tensor: The name 'save/Const:0' refers to a Tensor which does not exist. The operation, 'save/Const', does not exist in the graph.
Как говорится ошибки я не имею тензор save/Const:0
в моей экспортированной модели. Тем не менее, код freeze_graph.py
говорит, что это имя тензора можно указать флагом filename_tensor_name
. К сожалению, я не могу найти никакой информации о том, каким должен быть этот тензор и как правильно установить его для моей модели.
Может ли кто-нибудь сказать мне, как создать тензор save/Const:0
в моей экспортируемой модели ProtoBuf или как правильно установить флаг filename_tensor_name
?
+1 Если бы та же проблема, изменив порядок строк точно так же, как вы писали, решила проблему и для меня. Хотел бы и некоторые разъяснения :) – kazarey