Тензор 'embedding_input' имеет недопустимую форму '[None, None]' - PullRequest
0 голосов
/ 17 января 2019

Я пытаюсь создать модель многоклассовой классификации тензорного текстового текста. Я в основном скопировал код отсюда: https://colab.research.google.com/github/tensorflow/docs/blob/master/site/en/tutorials/keras/basic_text_classification.ipynb

В тензорном потоке все работает нормально, но когда я пытаюсь преобразовать модель save h5 в Tensorflow Lite , я получаю эту ошибку:

ValueError: None is only supported in the 1st dimension. Tensor 'embedding_input' has invalid shape '[None, None]'.

Вот так выглядит мой код:

vocab_size = 15000 # of words in dictionary

model = keras.Sequential()
model.add(keras.layers.Embedding(vocab_size, 16))
model.add(keras.layers.GlobalAveragePooling1D())
model.add(keras.layers.Dense(16, activation=tf.nn.relu))
model.add(keras.layers.Dense(7, activation=tf.nn.sigmoid))

model.compile(optimizer='adam',
              loss='categorical_crossentropy',
              metrics=['accuracy'])

history = model.fit(...)
keras.models.save_model(model, graphFile)

converter = tf.contrib.lite.TFLiteConverter.from_keras_model_file(graphFile)
tflite_model = converter.convert()
open("converted.tflite", "wb").write(tflite_model)

Я предполагаю, что проблема со слоем Embedded? Что я могу сделать, чтобы это исправить?

1 Ответ

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

Для преобразования требуется знать форму входного тензора. Только 1-е измерение (партия) может быть неизвестно (None). В некоторых случаях Keras не аннотирует известную тензорную форму. Вы можете указать входную форму, передав необязательный аргумент input_shapes:

converter = tf.contrib.lite.TFLiteConverter.from_keras_model_file(
    graphFile,
    input_shapes={'embedding_input': [1, vocab_size]}
)

См. Также похожую проблему: Tensorflow - ошибка преобразования модели h5 в tflite

...