Tensorflow - ошибка преобразования модели h5 в tflite - PullRequest
0 голосов
/ 16 января 2019

Я сделал учебный перевод с использованием предварительно обученной модели InceptionV3 и сохранил файл модели h5. После этого я могу делать прогнозы. Теперь я хочу преобразовать модель h5 в файл tflite, используя метод TFLiteConverter.convert (), например:

converter = lite.TFLiteConverter.from_keras_model_file('keras.model.h5')
tflite_model = converter.convert()

но я получаю эту ошибку:

File "from_saved_model.py", line 28, in <module>
    tflite_model = converter.convert()
  File "C:\Anaconda3\lib\site-packages\tensorflow\contrib\lite\python\lite.py", line 409, in convert
    "invalid shape '{1}'.".format(_tensor_name(tensor), shape))
ValueError: None is only supported in the 1st dimension. Tensor 'input_1' has invalid shape '[None, None, None, 3]'

Я использую Anaconda Python 3.6.8 в Windows 10 64 бит. Заранее благодарю за помощь!

Ответы [ 2 ]

0 голосов
/ 31 мая 2019
  1. загрузить keras.model.h5
  2. установить input_shape, просто избегайте [None, None, None, 3]
  3. сохранить как новую модель.
  4. Преобразуйте его, используя код, который вы отправили в вопросе.
0 голосов
/ 16 января 2019

Только размер пакета (индекс 0) может быть равен None при преобразовании модели из TensorFlow в TensorFlow Lite. Вы должны иметь возможность использовать аргумент input_shapes при вызове from_keras_model_file, чтобы получить правильную форму входного массива. Для модели InceptionV3 аргумент input_shapes часто равен {'Mul' : [1,299,299,3]}.

Документация для TFLiteConverter.from_keras_model_file доступна здесь . Принятые параметры следующие (скопировано из документации):

from_keras_model_file(
    cls,
    model_file,
    input_arrays=None,
    input_shapes=None,
    output_arrays=None
)
...