Прогнозируемые результаты Keras и CoreML очень разные - PullRequest
0 голосов
/ 24 мая 2018

Я использую Keras для обнаружения объектов и преобразовываю модель в CoreML для мобильного развертывания.

На стороне Python метод прогнозирования запускается на том же образе.Предварительная обработка (среднее удаление) обрабатывается на стороне питона для keras и coreML (red_bias, green_bias и т. Д.) С помощью coreML.

Выводы прогноза такие же, вплоть до первого знака после запятой, однако оставшаяся часть знаков после запятойвсе они разные.

Я проверяю с помощью numpy.testing.assert_array_almost_equal, чтобы получить разницу в выходных массивах между 4-10%.

Размер выходного массива (1 10000,45).

В результате получаются различные результаты прогнозирования и обнаружения объектов.

Любые сведения о том, почему это может происходить?

Как найти источник проблемы и устранить ее?это?

1 Ответ

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

Если вы все сделали правильно и модель работает на графическом процессоре, тогда ошибки такого рода являются нормой для курса.Графический процессор использует 16-разрядные числа с плавающей запятой, которые имеют точность примерно до 3 десятичных знаков, и если в вашей модели много слоев, такие ошибки точности будут накапливаться.

Кроме того, для некоторых типов моделей последний слой будет иметь большой вес и большое (отрицательное) смещение (чтобы сделать прогнозы очень достоверными), что усилит ошибки точности.

Попробуйте запустить модель Core ML на процессоре вместо графического процессора (см. MLPredictionOptions).Если точность теперь лучше, то это действительно 16-разрядные числа с плавающей запятой.

Как правило, об этом не стоит беспокоиться, поскольку (сверточные) нейронные сети достаточно устойчивы к таким проблемам точности, и вы будетевероятно, все еще получают правильные результаты от модели.

Мое эмпирическое правило заключается в том, что ошибки меньше, чем 5e-2, в порядке, и если есть только несколько ошибок, больше чем 5e-2, то модель в порядке.

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