Экспорт в Tensorflow Lite выглядит так, как будто он не добавляет веса и добавляет неподдерживаемые операции
Я хочу перезагрузить некоторые из моих переменных модели с сохраненным весом в chheckpoint и затем экспортировать его в файл tflite.
Вопрос немного сложен без кода, поэтому я сделал эту записную книжку Colab Jupyter с полным кодом, чтобы объяснить его лучше (весь код работает, вы можете скопировать новый коллаж и изменить, если хотите):
https://colab.research.google.com/drive/1wSor4CxEz36LgElVi4y_N8uiSt4-j9b2
Я получил это работает, но с двумя проблемами:
- Экспортированный файл.tflite имеет размер 3 КБ, поэтому я не верю, что это вся модель с весами. Только входное изображение 128x128x3, один вес для каждого больше 3К.
- Когда я наконец импортирую модель в Android, у меня появляется эта ошибка: "Не найдено пользовательской операции для имени" VariableV2 "/n Не найдено пользовательской операции для имени" ReorderAxes "/n Регистрация не удалась".
Может быть, последняя ошибка вызывает операции сохранения / восстановления? Они выглядят так, когда я сохраняю определение графа.
Заранее спасибо.
1 ответ
Я осознаю свою проблему... Я пытаюсь преобразовать в TFLITE модель без предварительного ее замораживания, TFLITE не разрешает узлы "VariableV2", потому что их там быть не должно..
Вся проблема исправлена замораживанием модели следующим образом:
output_graph_def = graph_util.convert_variables_to_constants(sess, sess.graph.as_graph_def(), ["output"])
Я потерял время на поиски, надеюсь, это поможет.