Как преобразовать график TensorFlow SavedModel в модель Caffe? - PullRequest
0 голосов
/ 10 января 2019

Я хочу использовать MMdnn для преобразования модели ResNet с тензорным потоком в другие фреймворки. Кажется, что я могу использовать mmconvert только для чтения из файла замороженного графа .pb.

Однако при использовании tf.estimator.Estimator создаваемый файл .pb является SavedModelDef. Я понимаю, что это обертка вокруг TF GraphDef. Таким образом, файл GraphDef .pb можно извлечь из SavedModel с помощью freeze_graph.py.

Оттуда мне понадобится имя узла ввода в TF GraphDef. Но я не уверен, как определить имя по просмотру .pbtxt. Ввод tf.Estimator с объектом tf.Dataset, в соответствии с каркасом.

Я предполагаю, что где-то должен быть держатель tf.Place, который принимает входные данные. Но я не уверен, как найти узел ввода.

1 Ответ

0 голосов
/ 11 января 2019

Отвечая на мой собственный вопрос здесь. Утилита freeze_graph, которая поставляется с tenorflow, полезна для извлечения graphdef из формата tf SavedModel.

Чтобы найти имя узла ввода, обязательно сохраните tf SavedModel в формате pbtxt. Откройте его и найдите первый узел вашего вычислительного графа, например, при использовании tf resnet первые узлы будут называться resnet_model / *. Найдите узел, который кормит этот узел, и у вас будет имя входного узла, которое нужно указать инструментам MMdnn. Я ожидал, что это будет tf.Placeholder, который Оценщик добавляет для входных данных. Этот узел был просто назван Placeholder, поэтому я указал его как входной.

Сначала извлеките граф вычислений.

freeze_graph --input_saved_model_dir <path/to/saved_model_dir> --output_node_names softmax --output_graph ./graph_def.pb

Затем используйте MMdnn, чтобы преобразовать его в caffe.

mmconvert -sf tensorflow -iw ./graph_def.pb --inNodeName Placeholder --inputShape 224,224,3 --dstNodeName softmax -df caffe -om tf_resnet
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...