#python #deep-learning #tensorflow2.0 #tensorflow-lite #nnapi
Вопрос:
Я обучил и квантовал модель тензорного потока на машине Ubuntu 18.04 и преобразовал ее в формат tflite. Затем я развернул его на плате Linux Yocto, оснащенной ускорителем NPU, tflite_runtime и NNAPI. Я заметил, что одна и та же модель tflite выдает разные прогнозы при использовании процессора на моем ПК и NPU NNAPI на плате для вывода. Прогнозы часто похожи, но в некоторых случаях они совершенно разные. Я попытался отключить NNAPI на плате и сделать вывод с помощью процессора, и результаты были такими же, как и на процессоре ПК. Поэтому я думаю, что проблема в NNAPI. Однако я не знаю, почему это происходит. Есть ли способ предотвратить это или сделать сеть более надежной во время обучения?
Комментарии:
1. Я такого раньше не слышал. Команда tflite будет очень заинтересована. Я думаю, вам следует открыть выпуск на странице github с достаточным количеством информации.
Ответ №1:
фирион,
Команда NNAPI также заинтересована в том, чтобы узнать больше.
Следует ожидать небольших изменений, но совершенно разных результатов быть не должно.
Вы пробовали на разных устройствах? Видите ли вы те же самые вариации?
Вы упомянули о сборке Linux Yocto. Вы запускаете свой тест с помощью Android на Yocto или используете сборку NNAPI для Linux?
Комментарии:
1. Я также попытался использовать pyarmnn вместо делегата NNAPI, и проблема не исчезла. Таким образом, проблема была ниже уровня NNAPI. Однако после некоторых испытаний мне удалось значительно снизить это поведение. В оригинальной версии моей сети не был квантован последний Плотный сигмоидный слой, потому что мне не удалось это сделать. Я изменил сигмоид на Softmax и попытался квантовать всю сеть. Теперь прогнозы почти те же самые. Я использую сборку Linux.
2. Спасибо за подробности. Похоже, вы исправили ошибку. Однако было бы неплохо выяснить, в чем заключалась первоначальная ошибка. Как вы думаете, вы можете создать минимальный тестовый случай?