Глубокое обучение - Как я могу проверить учебную модель MNIST на WML?

Это вопрос, связанный с "Watson Studio". Я сделал следующий учебник / помощник по углубленному обучению, успешно развернул сгенерированную модель CNN в WML(WebService). Здорово!

Учебное пособие: один слой свертки на данных MNIST
Помощник эксперимента

Затем я хотел бы проверить, может ли модель идентифицировать мой образ ( MNIST) в развернутой среде, и мне в голову пришли вопросы. Какой тип входного файла (возможно, файл изображения в пикселях) я должен подготовить для ввода модели? Как я могу пнуть конечную точку подсчета очков, передавая мое изображение? (Я видел фрагмент кода Python на вкладке "Реализация", но это пример json и не уверен, как я могу передать пиксельное изображение...)

payload_scoring = {"fields": [array_of_feature_columns], "values": [array_of_values_to_be_scored, another_array_of_values_to_be_scored]}

Любые советы / предложения приветствуются. Спасибо заранее.

1 ответ

Решение

Обученная модель принимает входные данные, которые представляют собой массив из 4 измерений, т.е. [<batchsize>, 28, 28, 1]где 28 относится к высоте и ширине изображения в пикселях, 1 относится к числу каналов. В настоящее время службе онлайн-развертывания и оценки WML требуются данные полезной нагрузки в формате, который соответствует формату ввода модели. Итак, чтобы предсказать любое изображение с этой моделью, вы должны...

  1. преобразовать изображение в массив размером [1, 28, 28, 1]. Преобразование изображения в массив объясняется в следующем разделе.
  2. предварительно обработать данные изображения в соответствии с требованиями модели, т.е. выполнить (а) нормализацию данных (б) преобразовать тип в плавающее
  3. предварительно обработанные данные должны быть указаны в формате json с соответствующими ключами. Этот документ JSON будет входной полезной нагрузкой для запроса оценки для модели.

Как преобразовать изображение в массив? Есть два способа.. (используя код Python)

a) библиотека python keras имеет набор данных MNIST, содержащий изображения MNIST, которые преобразуются в массивы 28 x 28. Используя приведенный ниже код Python, мы можем использовать этот набор данных для создания полезной нагрузки.

import numpy as np
from keras.datasets import mnist

(X, y), (X_test, y_test) = mnist.load_data()

score_payload_data = X_test.reshape(X_test.shape[0], X_test.shape[1], X_test.shape[2], 1)
score_payload_data = score_payload_data.astype("float32")/255
score_payload_data = score_payload_data[2].tolist() ## we are choosing the 2nd image in the list to predict
scoring_payload = {'values': [score_payload_data]}

б) Если у вас есть изображение размером 28 x 28 пикселей, мы можем создать полезную нагрузку, используя код ниже.

img_file_name = "<image file name with full path>"

from scipy import misc
img = misc.imread(img_file_name)
img_to_predict = img.reshape(img.shape[0], img.shape[1], 1)/255
img_to_predict = img_to_predict.astype("float32").tolist()
scoring_payload = {"values": [img_to_predict]}
Другие вопросы по тегам