предсказание облака и локальное предсказание не дают одинакового результата - PullRequest
0 голосов
/ 04 марта 2019

Я обучил классификатор изображений с помощью тензорного потока и развернул его в облаке.Когда я выполняю прогноз локально, я получаю результат, и когда я выполняю пакетное прогнозирование, используя мою развернутую модель, я получаю другой результат.

, чтобы выполнить прогноз локально, я использую этот скрипт

Чтобы выполнить прогнозирование с помощью облака, я сначала изменил размер своего изображения и преобразовал его в массив float32 (модель обучается с этим типом) и сохранил его как файл JSON, используя следующее:

import skimage, json
from PIL import Image
from resizeimage import resizeimage


with open('xxx.jpg', 'r+b') as f:
    with Image.open(f) as image:
        resized_image = resizeimage.resize_cover(image, [299,299])



converted_image = skimage.img_as_float32(resized_image).tolist()

with open('request.json','w') as jsonfile:
    json.dump({"image": converted_image}, jsonfile)

и затем я загружаю запрос в мое облачное хранилище и создаю задание для прогноза следующим образом:

gcloud ml-engine jobs submit prediction "test_batch_prediction" \
                       --model "xxx" \
                       --input-paths "gs://path/to/my/request/request.json" \
                       --output-path "gs://path/to/where/prediction/will/be/saved/prediction_results/" \
                       --region "europe-west1" \
                       --data-format "text"

Я думаю, что проблема заключается в изменении размера изображения и преобразовании его в float32, так как я неиспользуя те же методы, что и tenorflow, при выполнении обучения или локального прогнозирования.Может ли это быть проблемой?или есть что-то еще, о чем мне нужно беспокоиться.

1 Ответ

0 голосов
/ 12 июня 2019

Сценарий, который вы использовали локально, нормализовал значения пикселей от 0 до 255 (среднее значение по умолчанию - 0):

normalized = tf.divide (tf.subtract (resized, [input_mean]), [input_std])

В коде, который вы использовали для загрузки в cloudml для онлайн-прогнозирования, отсутствует этап нормализации.Добавьте это:

convert_image = convert_image / 255.0

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...