Softmax Tensorflow Lite не ведет себя должным образом - PullRequest
0 голосов
/ 05 января 2019

Я сделал простую сверточную модель Tensorflow, которая использует softmax для вывода. Когда я запускаю модель в Python и кормлю модель изображением, все работает соответственно. Однако, когда я конвертирую модель с помощью tflite и запускаю ее с Android, выводится список всех 0. Каким-то образом softmax не работает. Когда я удаляю функцию softmax, вывод одинаков в Python и Android, я могу исправить это, реализовав функцию softmax в Java, но должен быть лучший способ, верно? Я попытался изменить ось функции softmax, но она продолжает возвращать только 0 в Java.

Спасибо!

y_test = tf.nn.softmax(test_network[0])

1 Ответ

0 голосов
/ 05 января 2019

Предположительно, вы используете квантованный график. TFLite вычисляет softmax в плавающей точке, затем умножает его на 256 и сохраняет как uint8. Поскольку большинство значений очень мало, поэтому после умножения и округления до ближайших целых чисел они будут равны нулю. Однако ранжирование должно быть таким же, если вы хотите отобразить softmax, вы можете разделить их на 256, чтобы показать несколько верхних значений, которые не равны нулю.

...