проблема с преобразованием файла модели keras h5 в tflite - ошибка типа («аргумент ключевого слова не понят:», «интерполяция») - PullRequest
0 голосов
/ 22 ноября 2018

Построил свою собственную модель в керасе (только модифицировал существующую версию VGGSegnet), которая отлично работает.Обученная модель с керасом в google colab. Затем скачал ex1.model.1 на свой ноутбук (умный вывод отлично работает на ноутбуке). Конвертировал модель в файл h5, используя:

from keras.models import load_model, save_model
m = load_model('ex1.model.1')
m.save('model.h5')

Поскольку я хотел преобразовать модель вtflite, использующий команду терминала из tflites для моделей keras веб-сайт : tflite_convert --output_file = newmode.tflite --keras_model_file = model.h5

дает мне эту ошибку

    Instructions for updating:
`normal` is a deprecated alias for `truncated_normal`
Traceback (most recent call last):
  File "/home/otto/miniconda3/bin/tflite_convert", line 11, in <module>
    sys.exit(main())
  File "/home/otto/miniconda3/lib/python3.5/site-packages/tensorflow/contrib/lite/python/tflite_convert.py", line 412, in main
    app.run(main=run_main, argv=sys.argv[:1])
  File "/home/otto/miniconda3/lib/python3.5/site-packages/tensorflow/python/platform/app.py", line 125, in run
    _sys.exit(main(argv))
  File "/home/otto/miniconda3/lib/python3.5/site-packages/tensorflow/contrib/lite/python/tflite_convert.py", line 408, in run_main
    _convert_model(tflite_flags)
  File "/home/otto/miniconda3/lib/python3.5/site-packages/tensorflow/contrib/lite/python/tflite_convert.py", line 100, in _convert_model
    converter = _get_toco_converter(flags)
  File "/home/otto/miniconda3/lib/python3.5/site-packages/tensorflow/contrib/lite/python/tflite_convert.py", line 87, in _get_toco_converter
    return converter_fn(**converter_kwargs)
  File "/home/otto/miniconda3/lib/python3.5/site-packages/tensorflow/contrib/lite/python/lite.py", line 368, in from_keras_model_file
    keras_model = _keras.models.load_model(model_file)
  File "/home/otto/miniconda3/lib/python3.5/site-packages/tensorflow/python/keras/engine/saving.py", line 230, in load_model
    model = model_from_config(model_config, custom_objects=custom_objects)
  File "/home/otto/miniconda3/lib/python3.5/site-packages/tensorflow/python/keras/engine/saving.py", line 310, in model_from_config
    return deserialize(config, custom_objects=custom_objects)
  File "/home/otto/miniconda3/lib/python3.5/site-packages/tensorflow/python/keras/layers/serialization.py", line 64, in deserialize
    printable_module_name='layer')
  File "/home/otto/miniconda3/lib/python3.5/site-packages/tensorflow/python/keras/utils/generic_utils.py", line 173, in deserialize_keras_object
    list(custom_objects.items())))
  File "/home/otto/miniconda3/lib/python3.5/site-packages/tensorflow/python/keras/engine/network.py", line 1292, in from_config
    process_layer(layer_data)
  File "/home/otto/miniconda3/lib/python3.5/site-packages/tensorflow/python/keras/engine/network.py", line 1278, in process_layer
    layer = deserialize_layer(layer_data, custom_objects=custom_objects)
  File "/home/otto/miniconda3/lib/python3.5/site-packages/tensorflow/python/keras/layers/serialization.py", line 64, in deserialize
    printable_module_name='layer')
  File "/home/otto/miniconda3/lib/python3.5/site-packages/tensorflow/python/keras/utils/generic_utils.py", line 175, in deserialize_keras_object
    return cls.from_config(config['config'])
  File "/home/otto/miniconda3/lib/python3.5/site-packages/tensorflow/python/keras/engine/base_layer.py", line 1606, in from_config
    return cls(**config)
  File "/home/otto/miniconda3/lib/python3.5/site-packages/tensorflow/python/keras/layers/convolutional.py", line 1896, in __init__
    super(UpSampling2D, self).__init__(**kwargs)
  File "/home/otto/miniconda3/lib/python3.5/site-packages/tensorflow/python/training/checkpointable/base.py", line 474, in _method_wrapper
    method(self, *args, **kwargs)
  File "/home/otto/miniconda3/lib/python3.5/site-packages/tensorflow/python/keras/engine/base_layer.py", line 138, in __init__
    raise TypeError('Keyword argument not understood:', kwarg)
TypeError: ('Keyword argument not understood:', 'interpolation')

Google Colab использовал версию keras 2.2.4 и tenorflow 1.12.0 (и python2) Мой ноутбук использовал Linux 18.10, и те же версии keras / tenorflow (и python 3.5)

Есть идеи?Спасибо за вашу помощь!

edit: проверил, имеет ли значение тренировка и бег на локальной машине - но все равно та же ошибка. Должен ли я предоставить train.py и файл модели?

1 Ответ

0 голосов
/ 22 ноября 2018

Использование командного инструмента tflite_convert дает массу ошибок.Если вы хотите преобразовать свою модель keras (.h5) в формат TensorFlow Lite (.tflite), то вы можете сделать это с помощью Google Colab.Выполните следующие действия:

  1. Создание блокнота Google Colab.В левом верхнем углу нажмите кнопку «ЗАГРУЗИТЬ» и загрузите файл .h5.
  2. Создайте ячейку кода и вставьте этот код.

    from tensorflow.contrib import lite
    converter = lite.TFLiteConverter.from_keras_model_file( 'model.h5' ) # Your model's name
    model = converter.convert()
    file = open( 'model.tflite' , 'wb' ) 
    file.write( model )
    
  3. Запустите ячейку.Вы получите файл model.tflite.Щелкните правой кнопкой мыши по файлу и выберите опцию «ЗАГРУЗИТЬ».

Вы можете использовать эту записную книжку в качестве справки.

...