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 }
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}
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}
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}
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}
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
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
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