Я следую учебному пособию по тензорному потоку для поэтов (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» относится к операции, отсутствующей на графике. »
Если есть какие-либо предположения о том, что я делаю неправильно, они будут очень благодарны.