Интерпретатор Android Tensorflow Lite аварийно завершает работу

Я загружаю модель TensorFlow Lite в свое приложение для Android, но приложение продолжает вылетать (без распечатки ошибок):

tflite = new Interpreter(loadModelFile(activity));

Насколько я понимаю, из некоторых проблем с репозиторием тензорного потока на github, это связано с плохой моделью tflite; действительно, если вместо этого я загружу демонстрационную модель из репозитория, она будет работать нормально.

Как проверить правильность .tflite модели? Я создал его из файла модели тензорного потока .pb, преобразованного с помощью toco из репозитория, который не дал мне ни ошибок, ни положительных отзывов. Модель тензорного потока происходит от преобразования модели Кераса.


person Marco Mele    schedule 12.04.2018    source источник
comment
Можете ли вы посмотреть на logcat и получить трассировку стека вокруг сбоя? Какую модель вы используете? Можете ли вы предоставить фрагмент кода своего приложения для Android?   -  person Pannag Sanketi    schedule 01.06.2018
comment
Также вы можете попробовать протестировать на python с помощью интерпретатора python, если это для вас проще: tensorflow.org/api_docs/python/tf/contrib/lite/Interpreter   -  person suharshs    schedule 05.02.2019


Ответы (1)


Вы можете использовать его следующим образом [при условии, что ваша модель является файлом в папке с ресурсами]

try{
    tflite = new Interpreter(loadModelFile());
} catch (Exception ex){
    ex.printStackTrace();
}


private MappedByteBuffer loadModelFile() throws IOException {
    AssetFileDescriptor fileDescriptor = this.getAssets().openFd("modelname.tflite");
    FileInputStream inputStream = new FileInputStream(fileDescriptor.getFileDescriptor());
    FileChannel fileChannel = inputStream.getChannel();
    long startOffset = fileDescriptor.getStartOffset();
    long declaredLength = fileDescriptor.getDeclaredLength();
    return fileChannel.map(FileChannel.MapMode.READ_ONLY, startOffset, declaredLength);
}
person IbrahimOmar    schedule 20.04.2020