Модель Tensoflow выдает неверный вывод после преобразования

#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. Я использовал случайные данные для проверки выходных данных модели, и выходные данные всегда одинаковы с очень небольшим различием (я отредактировал сообщение с помощью кода, который производит случайный ввод). Мне также интересно, может ли вывод быть отрицательным.