У меня есть обученная модель TF, которая работает с сериализованным вводом (TFRecord
). Данные изображения имеют переменную форму и преобразуются в форму 229x229x3 с помощью tf.image.resize_images(...)
. Я хочу использовать gcloud ml-engine predict
платформу, аналогичную это, приняв любой размер изображение в качестве входных данных.
Я получаю свой тензор features
(который передается графу прогнозирования) из следующей функции:
def jpeg_serving_input_fn():
"""
Serve single jpeg feature to the prediction graph
:return: Image as a tensor
"""
input_features = tf.placeholder(dtype=tf.float32, shape=[None, None, 3],
name="PREDICT_PLACEHOLDER")
features_normalized = tf.image.resize_images(input_features, [229, 229])
image = tf.reshape(features_normalized, [1, 229, 229, 3], name="RESHAPE_PREDICT")
inputs = {
'image': image
}
tf.reshape
в конце потому, что мой прогнозный график ожидает тензор формы [batch_size, 229, 229, 3]
. Когда я запускаю это через двигатель через
gcloud ml-engine local predict \
--model-dir=trained_model/export/ \
--json-instances=img.json
Я получаю PredictionError
:
predict_lib_beta.PredictionError: (4, "Exception during running the graph: Cannot feed value of shape (1, 1600, 2400, 3) for Tensor u'RESHAPE_PREDICT:0', which has shape '(1, 229, 229, 3)'")
Мне кажется, что tf.reshape
получает вывод tf.image.resize_images
, который должен иметь правильную форму. Любые мысли о том, что я делаю неправильно здесь? Заранее спасибо!
tf.logging.debug(features_normalized.get_shape())
выводит то, что я ожидаю:229x229x3
. НО, он делает это при построении графика во время обучения перед сохранением модели. При восстановлении модели для предсказания форма не повторяется. Это явно имеет смысл, но странно, что когда я смотрю на график вtensorboard
,RESHAPE_PREDICT
нигде нет. - person fenkerbb   schedule 22.03.2017