Модель Keras не дает таких же результатов после преобразования в модель tenorflow-js - PullRequest
1 голос
/ 16 июня 2019

Модель Keras работает должным образом в Python, но после преобразования модели результаты на тех же данных различаются.

Я попытался обновить версию keras и tenorflowflow-js, но проблема все еще та же.

Python-код для тестирования:


import keras
import cv2
model = keras.models.load_model("keras_model.h5")
img = cv2.imread("test_image.jpg")

def preprocessing_img(img):
    img = cv2.resize(img, (50,50))
    x = np.array(img)
    image = np.expand_dims(x, axis=0)
    return image/255

prediction_array= model.predict(preprocessing_img(img))
print(prediction_array)
print(np.argmax(prediction_array))

Результаты: [[1.9591815e-16 1.0000000e + 00 3.8602989e-18 3.2472009e-19 5.8910814e-11]] 1

Этирезультаты верны.

Код Javascript:

Версия tfjs:

<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@0.13.5">
</script>

Метод preprocessing_img и прогноз в js:

function preprocessing_img(img)
  {
    let tensor = tf.fromPixels(img)
    const resized = tf.image.resizeBilinear(tensor, [50, 50]).toFloat()
    const offset = tf.scalar(255.0);
    const normalized = tf.scalar(1.0).sub(resized.div(offset));
    const batched = normalized.expandDims(0)

    return batched

  }

const pred = model.predict(preprocessing_img(imgEl)).dataSync()
const class_index = tf.argMax(pred);

В этом случаерезультаты не совпадают, и последний индекс в массиве pred составляет 1 90% времени.

Я думаю, что-то не так с методом предварительной обработки изображения в javascript, так как я не являюсь экспертом в javascript илия что-то упускаю в части JavaScript?

...