Добавьте весы в файл .pb, экспортированный TensorFlow

В моем проекте используется Python для обучения MLP на TensorFlow, а затем я экспортирую график и весы таким образом:

tf.train.write_graph(sess.graph_def, "./", "inp.txt", True) 
saver.save(sess, 'variables/model.ckpt', global_step=1)

Теперь, хотя использовать оба файла для импорта обратно на Python, кажется невозможным использовать его для Android или С++, поскольку он не может вставить контрольную точку .ckpt.

Прямо сейчас, я использую script freeze_graph.py, предоставляемый google, чтобы вставить оба файла в один, выполнив:

bazel-bin/tensorflow/python/tools/freeze_graph --input_graph=inp.txt --input_checkpoint=variables/model.ckpt-1 --output_graph=newoutput.pb --output_node_names=output

Мой вопрос: есть ли способ использовать другую функцию вместо tf.train.write_graph для экспорта с включенными весами?

Ответ 1

В настоящее время мне жаль говорить, что нет способа.

Как обсуждалось ранее в Github (посмотрите), команда TensorFlow в настоящее время не решает эту проблему.

Пока ничего не могу сказать.

pltrdy

Ответ 2

В настоящее время нет способа сделать это, к сожалению.

Было бы неплохо иметь способ сделать это напрямую. Я имею в виду, было бы здорово сделать что-то одноразовое, вместо того, чтобы генерировать два файла, а затем запускать еще один script для их преобразования.

Это особенно плохо для тех, кто использует гибридную графику на ноутбуке.

В любом случае, поскольку группа TensorFlow сказала:

У нас нет планов поддерживать вывод .pb файлов напрямую. если ты беспокоятся о том, что слишком много файлов контрольных точек занимают место, вы можете ограничьте max_to_keep до 1.

Ответ 3

В настоящее время freezegraph - единственный способ решить эту проблему.

Для меня это не очень хорошо, потому что я должен устанавливать его на многих компьютерах ежедневно, так как люди продолжают разбирать вещи, а freezegraph заставляет меня устанавливать его из источника.

Они должны создать другой способ сделать это. Встроенный способ. Специально, если они хотят, чтобы мы использовали для android.