Ejemplo n.º 1
0
    def get_export_signature(examples, features, predictions):
        """Create an export signature with named input and output signatures."""
        iris_labels = get_vocabulary(metadata_path)
        prediction = tf.argmax(predictions, 1)
        labels = tf.contrib.lookup.index_to_string(prediction,
                                                   mapping=iris_labels,
                                                   default_value=UNKNOWN_LABEL)

        outputs = {
            SCORES_OUTPUT_COLUMN: predictions.name,
            KEY_OUTPUT_COLUMN: tf.squeeze(features[KEY_FEATURE_COLUMN]).name,
            LABEL_OUTPUT_COLUMN: labels.name
        }

        inputs = {EXAMPLES_PLACEHOLDER_KEY: examples.name}

        tf.add_to_collection(INPUTS_KEY, json.dumps(inputs))
        tf.add_to_collection(OUTPUTS_KEY, json.dumps(outputs))

        input_signature = manifest_pb2.Signature()
        output_signature = manifest_pb2.Signature()

        for name, tensor_name in outputs.iteritems():
            output_signature.generic_signature.map[
                name].tensor_name = tensor_name

        for name, tensor_name in inputs.iteritems():
            input_signature.generic_signature.map[
                name].tensor_name = tensor_name

        # Return None for default classification signature.
        return None, {
            INPUTS_KEY: input_signature,
            OUTPUTS_KEY: output_signature
        }
Ejemplo n.º 2
0
def get_export_signature(examples, features, predictions):
  """Create a classification signature function and add output placeholders."""
  inputs = {'examples': examples.name}
  tf.add_to_collection('inputs', json.dumps(inputs))

  prediction = tf.argmax(predictions, 1)
  labels = tf.contrib.lookup.index_to_string(
      prediction, mapping=['0', '1'], default_value='UNKNOWN_LABEL')

  outputs = {'score': predictions.name,
             'key': features[KEY_FEATURE_COLUMN].name,
             'predicted_click_value': labels.name}
  tf.add_to_collection('outputs', json.dumps(outputs))

  output_signature = manifest_pb2.Signature()
  input_signature = manifest_pb2.Signature()

  for name, tensor_name in outputs.iteritems():
    output_signature.generic_signature.map[name].tensor_name = tensor_name

  for name, tensor_name in inputs.iteritems():
    input_signature.generic_signature.map[name].tensor_name = tensor_name

  # Return None for default classification signature..
  return None, {'inputs': input_signature, 'outputs': output_signature}
Ejemplo n.º 3
0
def _signature_fn(examples, features, predictions):
    """Create a classification signature function and add to collections."""
    # Mark the inputs.
    inputs = {"examples": examples.name}
    tf.add_to_collection("inputs", json.dumps(inputs))

    concat_embeddings = tf.get_collection(CONCAT_EMBEDDINGS_KEY)[0]
    outputs = {
        "score": predictions.name,
        "key": features[FLAGS.id_field].name,
        "target": features[FLAGS.target_field + "_string"].name,
        "embeddings": concat_embeddings.name
    }
    tf.add_to_collection("outputs", json.dumps(outputs))

    output_signature = manifest_pb2.Signature()
    for name, tensor_name in outputs.iteritems():
        output_signature.generic_signature.map[name].tensor_name = tensor_name

    input_signature = manifest_pb2.Signature()
    for name, tensor_name in inputs.iteritems():
        input_signature.generic_signature.map[name].tensor_name = tensor_name

    # Create a classification signature for serving prediction.
    signature = manifest_pb2.Signature()
    signature.classification_signature.input.tensor_name = examples.name
    signature.classification_signature.scores.tensor_name = predictions.name

    # Returns a tuple of None default signature and a dictionary of named
    # signatures with inputs and outputs.
    return signature, {"inputs": input_signature, "outputs": output_signature}
Ejemplo n.º 4
0
  def _build_signature(examples, features, predictions):
    """Create a generic signature function with input and output signatures."""
    iris_labels = VocabGetter(metadata_path).get_vocab().keys()
    prediction = tf.argmax(predictions, 1)
    labels = tf.contrib.lookup.index_to_string(prediction,
                                               mapping=iris_labels,
                                               default_value=UNKNOWN_LABEL)

    target = tf.contrib.lookup.index_to_string(tf.squeeze(features[TARGET_KEY]),
                                               mapping=iris_labels,
                                               default_value=UNKNOWN_LABEL)
    outputs = {SCORES_COLUMN: predictions.name,
               KEY_COLUMN: tf.squeeze(features[KEY_COLUMN]).name,
               TARGET_COLUMN: target.name,
               LABEL_COLUMN: labels.name}

    inputs = {EXAMPLES_KEY: examples.name}

    tf.add_to_collection(OUTPUTS_KEY, json.dumps(outputs))
    tf.add_to_collection(INPUTS_KEY, json.dumps(inputs))

    input_signature = manifest_pb2.Signature()
    output_signature = manifest_pb2.Signature()

    for name, tensor_name in outputs.iteritems():
      output_signature.generic_signature.map[name].tensor_name = tensor_name

    for name, tensor_name in inputs.iteritems():
      input_signature.generic_signature.map[name].tensor_name = tensor_name

    # Return None for default classification signature.
    return None, {INPUTS_KEY: input_signature,
                  OUTPUTS_KEY: output_signature}
Ejemplo n.º 5
0
def get_export_signature(examples, features, predictions):
    """Create a classification signature function and add output placeholders."""
    inputs = {'examples': examples.name}
    tf.add_to_collection('inputs', json.dumps(inputs))

    # TensorForest currently outputs a dict of both probabilities and
    # class predictions.
    if isinstance(predictions, dict) and (eval_metrics.INFERENCE_PROB_NAME
                                          in predictions):
        predictions = predictions[eval_metrics.INFERENCE_PROB_NAME]

    prediction = tf.argmax(predictions, 1)
    labels = tf.contrib.lookup.index_to_string(prediction,
                                               mapping=['0', '1'],
                                               default_value='UNKNOWN_LABEL')

    outputs = {
        'score': predictions.name,
        'key': features[KEY_FEATURE_COLUMN].name,
        'predicted_click_value': labels.name
    }
    tf.add_to_collection('outputs', json.dumps(outputs))

    output_signature = manifest_pb2.Signature()
    input_signature = manifest_pb2.Signature()

    for name, tensor_name in outputs.iteritems():
        output_signature.generic_signature.map[name].tensor_name = tensor_name

    for name, tensor_name in inputs.iteritems():
        input_signature.generic_signature.map[name].tensor_name = tensor_name

    # Return None for default classification signature..
    return None, {'inputs': input_signature, 'outputs': output_signature}
Ejemplo n.º 6
0
def generic_signature(name_tensor_map):
  """Creates a generic signature of name to Tensor name.

  Args:
    name_tensor_map: Map from logical name to Tensor.

  Returns:
    A Signature message.
  """
  signature = manifest_pb2.Signature()
  for name, tensor in six.iteritems(name_tensor_map):
    signature.generic_signature.map[name].tensor_name = tensor.name
  return signature
Ejemplo n.º 7
0
def regression_signature(input_tensor, output_tensor):
  """Creates a regression signature.

  Args:
    input_tensor: Tensor specifying the input to a graph.
    output_tensor: Tensor specifying the output of a graph.

  Returns:
    A Signature message.
  """
  signature = manifest_pb2.Signature()
  signature.regression_signature.input.tensor_name = input_tensor.name
  signature.regression_signature.output.tensor_name = output_tensor.name
  return signature
Ejemplo n.º 8
0
def classification_signature(input_tensor,
                             classes_tensor=None,
                             scores_tensor=None):
  """Creates a classification signature.

  Args:
    input_tensor: Tensor specifying the input to a graph.
    classes_tensor: Tensor specifying the output classes of a graph.
    scores_tensor: Tensor specifying the scores of the output classes.

  Returns:
    A Signature message.
  """
  signature = manifest_pb2.Signature()
  signature.classification_signature.input.tensor_name = input_tensor.name
  if classes_tensor is not None:
    signature.classification_signature.classes.tensor_name = classes_tensor.name
  if scores_tensor is not None:
    signature.classification_signature.scores.tensor_name = scores_tensor.name
  return signature