Сохранить модель для обслуживания, но «ValueError: Должны быть указаны и метки, и логиты».при попытке экспортировать модель - PullRequest
0 голосов
/ 21 сентября 2018

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

def _serving_input_receiver_fn():
    # Note: only handles one image at a time
    feat = tf.placeholder(tf.float32, shape=[None, 120, 50, 1])
    return tf.estimator.export.TensorServingInputReceiver(features=feat, receiver_tensors=feat)

и вот где я экспортирую модель:

  export_dir_base = os.path.join(FLAGS.model_dir, 'export')
  export_dir = estimator.export_savedmodel(
    export_dir_base, _serving_input_receiver_fn)

Но я получаю следующую ошибку:

ValueError: Both labels and logits must be provided.

СейчасЭту ошибку я не понимаю, так как обслуживающий материал должен просто создать заполнитель, чтобы позже я мог поместить некоторые изображения через заполнитель, чтобы делать прогнозы для сохраненной модели?

Вот весь след:

Traceback (most recent call last):
  File "/home/cezary/models/official/mnist/mnist_tpu.py", line 222, in <module>
    tf.app.run()
  File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/platform/app.py", line 125, in run
    _sys.exit(main(argv))
  File "/home/cezary/models/official/mnist/mnist_tpu.py", line 206, in main
    export_dir_base, _serving_input_receiver_fn)
  File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/estimator/estimator.py", line 650, in export_savedmodel
    mode=model_fn_lib.ModeKeys.PREDICT)
  File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/estimator/estimator.py", line 703, in _export_saved_model_for_mode
    strip_default_attrs=strip_default_attrs)
  File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/estimator/estimator.py", line 811, in _export_all_saved_models
    mode=model_fn_lib.ModeKeys.PREDICT)
  File "/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/tpu/python/tpu/tpu_estimator.py", line 1971, in _add_meta_graph_for_mode
    mode=mode)
  File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/estimator/estimator.py", line 879, in _add_meta_graph_for_mode
    config=self.config)
  File "/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/tpu/python/tpu/tpu_estimator.py", line 1992, in _call_model_fn
    features, labels, mode, config)
  File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/estimator/estimator.py", line 1107, in _call_model_fn
    model_fn_results = self._model_fn(features=features, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/tpu/python/tpu/tpu_estimator.py", line 2203, in _model_fn
    features, labels, is_export_mode=is_export_mode)
  File "/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/tpu/python/tpu/tpu_estimator.py", line 1131, in call_without_tpu
    return self._call_model_fn(features, labels, is_export_mode=is_export_mode)
  File "/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/tpu/python/tpu/tpu_estimator.py", line 1337, in _call_model_fn
    estimator_spec = self._model_fn(features=features, **kwargs)
  File "/home/cezary/models/official/mnist/mnist_tpu.py", line 95, in model_fn
    cross_entropy = tf.nn.sigmoid_cross_entropy_with_logits(labels=labels, logits=logits)
  File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/ops/nn_impl.py", line 156, in sigmoid_cross_entropy_with_logits
    labels, logits)
  File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/ops/nn_ops.py", line 1777, in _ensure_xent_args
    raise ValueError("Both labels and logits must be provided.")
ValueError: Both labels and logits must be provided.

Не берите в голову имя mnist, я просто использовал структуру кода, но не переименовал его.

Спасибо за любую помощь!

1 Ответ

0 голосов
/ 25 сентября 2018

(я не могу комментировать с новой учетной записью.) Я смог повторить вашу ошибку, установив для features и receiver_tensors одинаковое значение, но я не думаю, что ваш __serving_input_receiver_fnреализовано правильно.Можете ли вы последовать примеру здесь ?

...