0

我想保存一个模型来对特定图片进行一些预测。这是我的服务功能:

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.

现在这个错误我不明白,因为 Serving 的东西应该只创建一个占位符,以便我以后可以通过占位符放置一些图像以对保存的模型进行预测?

这是整个回溯:

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命名没关系,我只是使用了代码的结构,但没有重命名。

谢谢你的帮助!

4

1 回答 1

0

(我无法用全新的帐户发表评论。)我能够通过设置featuresreceiver_tensors具有相同的值来复制您的错误,但我认为您__serving_input_receiver_fn的实施不正确。你能按照这里的例子

于 2018-09-25T00:59:40.960 回答