Как заморозить Inception-ResNet-v2 с помощью контрольной точки Tensorflow и программ TF Python?

Как можно создать предварительно обученный/замороженный граф для Inception-ResNet-v2 с использованием программ Tensorflow Python и файла контрольных точек Tensorflow (загружен с здесь)?

Ниже показано, что я пробовал, но freeze_graph.py, похоже, не находит переменные.

Не хватает еще одного шага?

Имена переменных в графе и в контрольной точке несовместимы?

$ python3 $TENSORFLOW_HOME/models/research/slim/export_inference_graph.py \
--modal_name inception_resnet_v2 \
--output_file /tmp/inception_resnet_v2.pb

2018-01-08 02:35:11.819267: I tensorflow/core/platform/s3/aws_logging.cc:53] Initializing Curl library
/usr/lib64/python3.6/site-packages/h5py/__init__.py:36: FutureWarning: Conversion of the second argument of issubdtype from `float` to `np.floating` is deprecated. In future, it will be treated as `np.float64 == np.dtype(float).type`.
  from ._conv import register_converters as _register_converters
INFO:tensorflow:Scale of 0 disables regularizer.

$ python3 $TENSORFLOW_HOME/tensorflow/tensorflow/python/tools/freeze_graph.py \
--input_graph /tmp/inception_resnet_v2.pb \
--input_checkpoint /tmp/inception_resnet_v2_2016_08_30.ckpt \
--output_graph /tmp/inception_resnet_v2-frozen_graph.pb \
--input_binary true \
--output_node_names 'InceptionV3/Predictions/Reshape_1'

2018-01-08 02:36:23.083874: I tensorflow/core/platform/s3/aws_logging.cc:53] Initializing Curl library
/usr/lib64/python3.6/site-packages/h5py/__init__.py:36: FutureWarning: Conversion of the second argument of issubdtype from `float` to `np.floating` is deprecated. In future, it will be treated as `np.float64 == np.dtype(float).type`.
  from ._conv import register_converters as _register_converters
Traceback (most recent call last):
  File "/usr/local/src/tensorflow/tensorflow/tensorflow/python/tools/freeze_graph.py", line 350, in <module>
    app.run(main=main, argv=[sys.argv[0]] + unparsed)
  File "/home/rick/.local/lib/python3.6/site-packages/tensorflow/python/platform/app.py", line 124, in run
    _sys.exit(main(argv))
  File "/usr/local/src/tensorflow/tensorflow/tensorflow/python/tools/freeze_graph.py", line 249, in main
    FLAGS.saved_model_tags)
  File "/usr/local/src/tensorflow/tensorflow/tensorflow/python/tools/freeze_graph.py", line 239, in freeze_graph
    input_meta_graph_def, input_saved_model_dir, saved_model_tags.split(","))
  File "/usr/local/src/tensorflow/tensorflow/tensorflow/python/tools/freeze_graph.py", line 127, in freeze_graph_with_def_protos
    saver = saver_lib.Saver(var_list=var_list)
  File "/home/rick/.local/lib/python3.6/site-packages/tensorflow/python/training/saver.py", line 1288, in __init__
    self.build()
  File "/home/rick/.local/lib/python3.6/site-packages/tensorflow/python/training/saver.py", line 1297, in build
    self._build(self._filename, build_save=True, build_restore=True)
  File "/home/rick/.local/lib/python3.6/site-packages/tensorflow/python/training/saver.py", line 1322, in _build
    raise ValueError("No variables to save")
ValueError: No variables to save

person rickhg12hs    schedule 08.01.2018    source источник


Ответы (1)


Вы используете V2, но в своей команде указали --output_node_names 'InceptionV3/Predictions/Reshape_1'. Я предполагаю, что InceptionV3 должно быть InceptionV2?

Кстати, я никогда не использую freeze_graph для успешного экспорта замороженного графика. Другой подход — использовать export_inference_graph.py. Инструкцию можно найти в Экспорт обученной модели для вывода. .

Наконец, если вы уже экспортировали inception_resnet_v2.pb на первом этапе (кстати, --modal_name является опечаткой в ​​--model_name?), зачем снова экспортировать его в inception_resnet_v2-frozen_graph.pb?

person hiankun    schedule 22.06.2018