#tensorflow #keras #tensorflow-lite
#tensorflow #keras #tensorflow-lite
Вопрос:
Моя цель — разработать приложение, которое выполняет классификацию изображений. Модель Keras, похоже, работает хорошо, но после того, как я пытаюсь преобразовать в Tensorflow Lite, вывод совершенно неверный.
Это слои модели
model = Sequential([
layers.experimental.preprocessing.Rescaling(1./255, input_shape=(img_height, img_width, 3)),
layers.Conv2D(16, 3, padding='same', activation='relu'),
layers.MaxPooling2D(),
layers.Conv2D(32, 3, padding='same', activation='relu'),
layers.MaxPooling2D(),
layers.Conv2D(64, 3, padding='same', activation='relu'),
layers.MaxPooling2D(),
layers.Flatten(),
layers.Dense(128, activation='relu'),
layers.Dense(num_classes)
])
Вот как я сохраняю, а затем конвертирую модель.
model.save('/content/drive/My Drive/my_model.h5')
TF_LITE_MODEL_NAME = "tf_lite_model.tflite"
tf_lite_converter = tf.lite.TFLiteConverter.from_keras_model(model)
tflite_model = tf_lite_converter.convert()
tflite_model_name = TF_LITE_MODEL_NAME
open(tflite_model_name, "wb").write(tflite_model)
Вывод выглядит следующим образом:
[[ 1.4364377 -0.02920453 -0.149581 -0.7537567 ]]
Почему возникает эта проблема?
Редактировать (код, который вводит случайный ввод в модель)
# Load TFLite model and allocate tensors.
interpreter = tf.lite.Interpreter(model_path="/content/tf_lite_model.tflite")
interpreter.allocate_tensors()
# Get input and output tensors.
input_details = interpreter.get_input_details()
output_details = interpreter.get_output_details()
# Test model on random input data.
input_shape = input_details[0]['shape']
input_data = np.array(np.random.random_sample(input_shape), dtype=np.float32)
interpreter.set_tensor(input_details[0]['index'], input_data)
interpreter.invoke()
# The function `get_tensor()` returns a copy of the tensor data.
# Use `tensor()` in order to get a pointer to the tensor.
output_data = interpreter.get_tensor(output_details[0]['index'])
print(output_data)
Комментарии:
1. Как неверны прогнозы модели TFLite? Каковы были ожидаемые результаты от модели Python?
2. Я использовал случайные данные для проверки выходных данных модели, и выходные данные всегда одинаковы с очень небольшим различием (я отредактировал сообщение с помощью кода, который производит случайный ввод). Мне также интересно, может ли вывод быть отрицательным.