TFLite для микроконтроллеров: проблемы компиляции для операторов на голое железо - PullRequest
0 голосов
/ 22 января 2020

Описание проблемы

У меня проблема с компиляцией приложения с использованием tenorflow lite для микроконтроллеров.

Я пытаюсь перенести tflite для микроконтроллеров на новую цель. Как описано в этом руководстве , я использовал пример проекта (полностью подключенный тестовый проект), который мне удалось быстро собрать без каких-либо проблем. Я знаю, что я не использую компилятор, для которого есть примеры проектов, но это не было проблемой до сих пор. Мне удалось инициализировать и запустить модель до того момента, когда отсутствуют некоторые операторы TF, такие как SUB или CAST.

Теперь, когда я добавил lite/kernels/sub.cc (в папке experimental/micro нет sub.cc), мне нужно включить lite/kernels/optimized/cpu_check.h, который зависит от lite/kernels/cpu_backend_context.h, который, в свою очередь, зависит от gemmlowp. Мне не удалось скомпилировать gemmlowp, потому что это зависит от многих источников, зависящих от ОС. Однако я прочитал в readme для TFLite для микроконтроллеров, что таких зависимостей не должно быть.

Мне кажется, что эти операторы еще не были портированы, и я знаю, что это в очень экспериментальном состоянии и подвержены радикальным изменениям. Может кто-нибудь подсказать мне, что я могу сделать? Есть ли способ, который мог бы помочь мне включить этих операторов в проект, возможно, убрав вещи из «нормальной» реализации tflite? Я не думаю, что мне нужно что-то из unistd.h, от которого зависит gemmlowp.

Примечание:

Моя модель генерируется мл-агентами , который использует tensorflow>=1.7,<2.1 и сохраняет модели в виде замороженных графиков. Это может привести к ограничениям, если не к проблемам.

Я более чем рад предоставить любую информацию, которая может предоставить более необходимую информацию

Информация о системе

  • Платформа и дистрибутив ОС (например, Linux Ubuntu 16.04): Хост: macOS 10.14.6, Target Tiva TM4C123
  • TensorFlow установлен из (источника или двоичного файла): источник
  • TensorFlow версия: 1.14
    • Предварительно сгенерированные проекты в руководстве по портированию микро ридми TFLite основаны на 1.14, я попытался перейти на более свежую версию, но каким-то образом микро-интерпретатор не смог прочитайте модель правильно.
    • При проверке модели и ее входных данных, input->dims->size содержит очень большое число, которое является неправильным.
  • Python версия: 3.6. 9 (Анаконда)
  • Установлен с помощью virtualenv? Пип? conda ?: conda
  • Базельская версия (если компилируется из исходного кода): 1.2.1
  • Версия GCC / компилятора (если компилируется из исходного кода): TI ARM C / C ++ Compiler v18.12.4.LTS
...