Tensorflow TOCO Python API - PullRequest
       1

Tensorflow TOCO Python API

0 голосов
/ 01 мая 2018

Я следую учебному пособию по тензорному потоку для поэтов (tflite): https://codelabs.developers.google.com/codelabs/tensorflow-for-poets-2-tflite/#3

Я пытаюсь преобразовать пользовательский график из .pb в tflite с помощью Python TOCO API: https://github.com/tensorflow/tensorflow/blob/master/tensorflow/contrib/lite/toco/g3doc/python_api.md

Следующий код загружает файл retrained_graph.pb, находит тензор ввода и вывода, затем вызывает toco_convert и записывает файл .tflite.

    import tensorflow as tf
     def load_graph(graph_filename):
     with tf.gfile.GFile(graph_filename, "rb") as f:
        graph_def = tf.GraphDef()
        graph_def.ParseFromString(f.read())

     with tf.Graph().as_default() as graph:
        tf.import_graph_def(
          graph_def,
          input_map=None,
          return_elements=None,
          name="prefix",
          op_dict=None,
          producer_op_list=None
         )


    graph = load_graph("retrained_graph.pb")
    x = graph.get_tensor_by_name('prefix/input:0') #input tensor
    y = graph.get_tensor_by_name('prefix/final_result:0') #output tensor


    with tf.Session(graph=graph) as sess:
       tflite_model = tf.contrib.lite.toco_convert(sess.graph_def, [x], [y])
       open("test.tflite", "wb").write(tflite_model)

Создает файл test.tflite. Чтобы проверить, работает ли я, я запускаю скрипт label_image из tf для поэтов, который выдает эту ошибку:

KeyError: «Имя« import / input »относится к операции, отсутствующей на графике.»

В поисках решений я попытался изменить input_layer = "input" на input_layer = "Mul", но это только выдает ошибку:

KeyError: «Имя import / Mul» относится к операции, отсутствующей на графике. »

Если есть какие-либо предположения о том, что я делаю неправильно, они будут очень благодарны.

Ответы [ 2 ]

0 голосов
/ 01 мая 2018

Согласно вашему коду, ваше имя input_layer - «префикс / ввод», а не «ввод». Изменение на input_layer="prefix/input" должно решить ваши проблемы.

0 голосов
/ 01 мая 2018

Вы пытались использовать sumrize_graph для проверки потенциальных имен узлов ввода / вывода для вашей модели?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...