Как преобразовать последнюю модель бэкэнд-каналов Theano, сначала в бэкэнд-модель Tensorflow, а затем в tflite? - PullRequest
0 голосов
/ 15 апреля 2019

Проблема

У меня есть обученная модель (не моя), по которой я могу сделать выводы с помощью Theano Backend.Мне нужно запустить его на Android, поэтому я пытаюсь преобразовать эту модель в Tensorflow lite (.tflite).

Перед преобразованием в .tflite я пытаюсь заставить модель работать с бэкэндом тензорного потока, но яне могу сделать это правильно.(питон с керасом)

Что работает

Это то, что я делаю с моделью theano, theano backend, упорядочением каналов в последнюю очередь, работает нормально:

with open('Model/definition.json', 'r') as f:
    model = model_from_json(f.read())
model.load_weights('Model/weights.h5')
p = model.predict_proba(preprocessed_data)
print_results(p)

модель имеет только два выхода (обнаружен или не обнаружен), и он работает нормально.

Что не работает

Когда я просто переключаю бэкэнд на тензор потока и запускаю тот же код, модель не работаетбольше ничего не обнаруживать.

То, что я уже пробовал

Сначала я подумал, что это проблема нечеткого упорядочения, как я видел на следующих страницах, например: Преобразование определения модели Keras на основе Theano вTensorFlow .

  • В модели theano должны использоваться измерения с первым каналом.
  • В модели с тензорным потоком должны использоваться измерения с последним каналом.

Тамэто также сценарий из этой темы, который я пробовал: https://github.com/keras-team/keras/issues/5374

Он не работает для меня, потому что я думаю, что мои веса уже являются каналами - последний порядок!(Это то, что я предполагал от netron , см. Изображение на Imgur

Последнее, что я попробовал, было convert_all_kernels_in_model () , но я получил этоошибка:

tenorflow.python.framework.errors_impl.FailedPreconditionError: Попытка использовать неинициализированное значение conv2d_1 / kernel [[{{{node _retval_conv2d_1 / kernel_0_0}}]]

* 1049Вопрос

Как вы думаете, что мне нужно сделать на моей модели, чтобы она работала с бэкэндом тензорного потока (чтобы преобразовать ее в tflite ...) ???

...