def estimator_spec_predict(self, features, use_tpu=False):
    """Constructs `tf.estimator.EstimatorSpec` for PREDICT (inference) mode."""
    decode_hparams = self._decode_hparams
    top_beams = decode_hparams.beam_size if decode_hparams.return_beams else 1
    infer_out = self.infer(
        features,
        beam_size=decode_hparams.beam_size,
        top_beams=top_beams,
        alpha=decode_hparams.alpha,
        decode_length=decode_hparams.extra_length,
        use_tpu=use_tpu)
    if isinstance(infer_out, dict):
      outputs = infer_out["outputs"]
      scores = infer_out["scores"]
    else:
      outputs = infer_out
      scores = None

    inputs = features.get("inputs")
    if inputs is None:
      inputs = features["targets"]

    predictions = {
        "outputs": outputs,
        "scores": scores,
        "inputs": inputs,
        "targets": features.get("infer_targets"),
    }

    # Pass through remaining features
    for name, feature in features.items():
      if name not in list(predictions.keys()) + ["infer_targets"]:
        if name == "decode_loop_step":
          continue
        if not feature.shape.as_list():
          # All features must have a batch dimension
          batch_size = common_layers.shape_list(outputs)[0]
          feature = tf.tile(tf.expand_dims(feature, 0), [batch_size])
        predictions[name] = feature

    _del_dict_non_tensors(predictions)

    export_out = {"outputs": predictions["outputs"]}
    if "scores" in predictions:
      export_out["scores"] = predictions["scores"]

    # Necessary to rejoin examples in the correct order with the Cloud ML Engine
    # batch prediction API.
    if "batch_prediction_key" in predictions:
      export_out["batch_prediction_key"] = predictions["batch_prediction_key"]

    export_outputs = {
        tf.saved_model.signature_constants.DEFAULT_SERVING_SIGNATURE_DEF_KEY:
            tf.estimator.export.PredictOutput(export_out)
    }
    if use_tpu:
      # Note: important to call this before remove_summaries()
      if self.hparams.tpu_enable_host_call:
        host_call = self.create_eval_host_call()
      else:
        host_call = None

      remove_summaries()

      return tf.contrib.tpu.TPUEstimatorSpec(
          tf.estimator.ModeKeys.PREDICT,
          predictions=predictions,
          host_call=host_call,
          export_outputs=export_outputs)
    else:
      return tf.estimator.EstimatorSpec(
          tf.estimator.ModeKeys.PREDICT,
          predictions=predictions,
          export_outputs=export_outputs)
def estimator_spec_predict ( self , features , use_tpu = False ) : decode_hparams = self . _decode_hparams top_beams = decode_hparams . beam_size if decode_hparams . return_beams else 1 infer_out = self . infer ( features , beam_size = decode_hparams . beam_size , top_beams = top_beams , alpha = decode_hparams . alpha , decode_length = decode_hparams . extra_length , use_tpu = use_tpu ) if isinstance ( infer_out , dict ) : outputs = infer_out [ "outputs" ] scores = infer_out [ "scores" ] else : outputs = infer_out scores = None inputs = features . get ( "inputs" ) if inputs is None : inputs = features [ "targets" ] predictions = { "outputs" : outputs , "scores" : scores , "inputs" : inputs , "targets" : features . get ( "infer_targets" ) , } for name , feature in features . items ( ) : if name not in list ( predictions . keys ( ) ) + [ "infer_targets" ] : if name == "decode_loop_step" : continue if not feature . shape . as_list ( ) : batch_size = common_layers . shape_list ( outputs ) [ 0 ] feature = tf . tile ( tf . expand_dims ( feature , 0 ) , [ batch_size ] ) predictions [ name ] = feature _del_dict_non_tensors ( predictions ) export_out = { "outputs" : predictions [ "outputs" ] } if "scores" in predictions : export_out [ "scores" ] = predictions [ "scores" ] if "batch_prediction_key" in predictions : export_out [ "batch_prediction_key" ] = predictions [ "batch_prediction_key" ] export_outputs = { tf . saved_model . signature_constants . DEFAULT_SERVING_SIGNATURE_DEF_KEY : tf . estimator . export . PredictOutput ( export_out ) } if use_tpu : if self . hparams . tpu_enable_host_call : host_call = self . create_eval_host_call ( ) else : host_call = None remove_summaries ( ) return tf . contrib . tpu . TPUEstimatorSpec ( tf . estimator . ModeKeys . PREDICT , predictions = predictions , host_call = host_call , export_outputs = export_outputs ) else : return tf . estimator . EstimatorSpec ( tf . estimator . ModeKeys . PREDICT , predictions = predictions , export_outputs = export_outputs )
Constructs `tf.estimator.EstimatorSpec` for PREDICT (inference) mode.