tfr.keras.model.ModelBuilderWithMask
Stay organized with collections
Save and categorize content based on your preferences.
Interface to build a tf.keras.Model
for ranking with a mask Tensor.
Inherits From: AbstractModelBuilder
tfr.keras.model.ModelBuilderWithMask(
mask_feature_name: str, name: Optional[str] = None
)
The ModelBuilderWithMask
class is an abstract class to build a ranking model
based on dense Tensors and a mask Tensor to indicate the padded ones.
All the boilerplate codes related to constructing a tf.keras.Model
are
integrated in the ModelBuilder class.
To be implemented by subclasses:
create_inputs()
: Contains the logic to create tf.keras.Input
for
context and example inputs and mask for valid list items.
preprocess()
: Contains the logic to preprocess context and example
inputs.
score()
: Contains the logic to score examples in list and return
outputs.
Example subclass implementation:
class SimpleModelBuilder(ModelBuilderWithMask):
def __init__(self, context_feature_spec, example_feature_spec,
mask_feature_name, name=None):
self._context_feature_spec = context_feature_spec
self._example_feature_spec = example_feature_spec
self._mask_feature_name = mask_feature_name
self._name = name
def create_inputs(self):
context_inputs = {
name: tf.keras.Input(
shape=tuple(spec.shape),
name=name,
dtype=spec.dtype
) for name, spec in self._context_feature_spec.items()
}
example_inputs = {
name: tf.keras.Input(
shape=(None,) + tuple(spec.shape),
name=name,
dtype=spec.dtype
) for name, spec in self._example_feature_spec.items()
}
mask = tf.keras.Input(
name=self._mask_feature_name, shape=(None,), dtype=tf.bool)
return context_inputs, example_inputs, mask
def preprocess(self, context_inputs, example_inputs, mask):
context_features = {
name: tf.math.log1p(
tf.abs(tensor)) for name, tensor in context_inputs.items()
}
example_features = {
name: tf.math.log1p(
tf.abs(tensor)) for name, tensor in example_inputs.items()
}
return context_features, example_features
def score(self, context_features, example_features, mask):
x = tf.concat([tensor for tensor in example_features.values()], -1)
return tf.keras.layers.Dense(1)(x)
Args |
mask_feature_name
|
name of 2D mask boolean feature.
|
name
|
(optional) name of the Model.
|
Methods
build
View source
build() -> tf.keras.Model
Builds a Keras Model for Ranking Pipeline.
Example usage:
model_builder = SimpleModelBuilder(
{},
{"example_feature_1": tf.io.FixedLenFeature(
shape=(1,), dtype=tf.float32, default_value=0.0)},
"list_mask", "model_builder")
model = model_builder.build()
View source
@abc.abstractmethod
create_inputs() -> Tuple[tfr.keras.model.TensorDict
, tfr.keras.model.TensorDict
, tf.Tensor]
Creates context and example inputs.
Example usage:
model_builder = SimpleModelBuilder(
{},
{"example_feature_1": tf.io.FixedLenFeature(
shape=(1,), dtype=tf.float32, default_value=0.0)},
"list_mask", "model_builder")
context_inputs, example_inputs, mask = model_builder.create_inputs()
Returns |
A tuple of
|
context_inputs
|
maps from context feature keys to Keras Input.
|
example_inputs
|
maps from example feature keys to Keras Input.
|
mask
|
Keras Input for the mask feature.
|
preprocess
View source
@abc.abstractmethod
preprocess(
context_inputs: tfr.keras.model.TensorDict
,
example_inputs: tfr.keras.model.TensorDict
,
mask: tf.Tensor
) -> Tuple[tfr.keras.model.TensorDict
, tfr.keras.model.TensorDict
]
Preprocesses context and example inputs.
Example usage:
model_builder = SimpleModelBuilder(
{},
{"example_feature_1": tf.io.FixedLenFeature(
shape=(1,), dtype=tf.float32, default_value=0.0)},
"list_mask", "model_builder")
context_inputs, example_inputs, mask = model_builder.create_inputs()
context_features, example_features = model_builder.preprocess(
context_inputs, example_inputs, mask)
Args |
context_inputs
|
maps context feature keys to tf.keras.Input .
|
example_inputs
|
maps example feature keys to tf.keras.Input .
|
mask
|
[batch_size, list_size]-tensor of mask for valid examples.
|
Returns |
A tuple of
|
context_features
|
maps from context feature keys to [batch_size,
feature_dims]-tensors of preprocessed context features.
|
example_features
|
maps from example feature keys to [batch_size,
list_size, feature_dims]-tensors of preprocessed example features.
|
score
View source
@abc.abstractmethod
score(
context_features: tfr.keras.model.TensorDict
,
example_features: tfr.keras.model.TensorDict
,
mask: tf.Tensor
) -> Union[TensorLike, TensorDict]
Scores all examples and returns outputs.
Example usage:
model_builder = SimpleModelBuilder(
{},
{"example_feature_1": tf.io.FixedLenFeature(
shape=(1,), dtype=tf.float32, default_value=0.0)},
"list_mask", "model_builder")
context_inputs, example_inputs, mask = model_builder.create_inputs()
context_features, example_features = model_builder.preprocess(
context_inputs, example_inputs, mask)
scores = model_builder.score(context_features, example_features)
Args |
context_features
|
maps from context feature keys to [batch_size,
feature_dims]-tensors of preprocessed context features.
|
example_features
|
maps from example feature keys to [batch_size,
list_size, feature_dims]-tensors of preprocessed example features.
|
mask
|
[batch_size, list_size]-tensor of mask for valid examples.
|
Returns |
A [batch_size, list_size]-tensor of logits or a dict mapping task name to
logits in the multi-task setting.
|
Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.
Last updated 2023-08-18 UTC.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2023-08-18 UTC."],[],[],null,["# tfr.keras.model.ModelBuilderWithMask\n\n\u003cbr /\u003e\n\n|-------------------------------------------------------------------------------------------------------------------------------|\n| [View source on GitHub](https://github.com/tensorflow/ranking/blob/v0.5.3/tensorflow_ranking/python/keras/model.py#L113-L313) |\n\nInterface to build a [`tf.keras.Model`](https://www.tensorflow.org/api_docs/python/tf/keras/Model) for ranking with a mask Tensor.\n\nInherits From: [`AbstractModelBuilder`](../../../tfr/keras/model/AbstractModelBuilder) \n\n tfr.keras.model.ModelBuilderWithMask(\n mask_feature_name: str, name: Optional[str] = None\n )\n\nThe `ModelBuilderWithMask` class is an abstract class to build a ranking model\nbased on dense Tensors and a mask Tensor to indicate the padded ones.\nAll the boilerplate codes related to constructing a [`tf.keras.Model`](https://www.tensorflow.org/api_docs/python/tf/keras/Model) are\nintegrated in the ModelBuilder class.\n\nTo be implemented by subclasses:\n\n- `create_inputs()`: Contains the logic to create [`tf.keras.Input`](https://www.tensorflow.org/api_docs/python/tf/keras/Input) for context and example inputs and mask for valid list items.\n- `preprocess()`: Contains the logic to preprocess context and example inputs.\n- `score()`: Contains the logic to score examples in list and return outputs.\n\nExample subclass implementation: \n\n class SimpleModelBuilder(ModelBuilderWithMask):\n\n def __init__(self, context_feature_spec, example_feature_spec,\n mask_feature_name, name=None):\n self._context_feature_spec = context_feature_spec\n self._example_feature_spec = example_feature_spec\n self._mask_feature_name = mask_feature_name\n self._name = name\n\n def create_inputs(self):\n context_inputs = {\n name: tf.keras.Input(\n shape=tuple(spec.shape),\n name=name,\n dtype=spec.dtype\n ) for name, spec in self._context_feature_spec.items()\n }\n example_inputs = {\n name: tf.keras.Input(\n shape=(None,) + tuple(spec.shape),\n name=name,\n dtype=spec.dtype\n ) for name, spec in self._example_feature_spec.items()\n }\n mask = tf.keras.Input(\n name=self._mask_feature_name, shape=(None,), dtype=tf.bool)\n return context_inputs, example_inputs, mask\n\n def preprocess(self, context_inputs, example_inputs, mask):\n context_features = {\n name: tf.math.log1p(\n tf.abs(tensor)) for name, tensor in context_inputs.items()\n }\n example_features = {\n name: tf.math.log1p(\n tf.abs(tensor)) for name, tensor in example_inputs.items()\n }\n return context_features, example_features\n\n def score(self, context_features, example_features, mask):\n x = tf.concat([tensor for tensor in example_features.values()], -1)\n return tf.keras.layers.Dense(1)(x)\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n| Args ---- ||\n|---------------------|----------------------------------|\n| `mask_feature_name` | name of 2D mask boolean feature. |\n| `name` | (optional) name of the Model. |\n\n\u003cbr /\u003e\n\nMethods\n-------\n\n### `build`\n\n[View source](https://github.com/tensorflow/ranking/blob/v0.5.3/tensorflow_ranking/python/keras/model.py#L285-L313) \n\n build() -\u003e tf.keras.Model\n\nBuilds a Keras Model for Ranking Pipeline.\n\n#### Example usage:\n\n model_builder = SimpleModelBuilder(\n {},\n {\"example_feature_1\": tf.io.FixedLenFeature(\n shape=(1,), dtype=tf.float32, default_value=0.0)},\n \"list_mask\", \"model_builder\")\n model = model_builder.build()\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n| Returns ||\n|---|---|\n| A [`tf.keras.Model`](https://www.tensorflow.org/api_docs/python/tf/keras/Model). ||\n\n\u003cbr /\u003e\n\n### `create_inputs`\n\n[View source](https://github.com/tensorflow/ranking/blob/v0.5.3/tensorflow_ranking/python/keras/model.py#L190-L211) \n\n @abc.abstractmethod\n create_inputs() -\u003e Tuple[../../../tfr/keras/model/TensorDict, ../../../tfr/keras/model/TensorDict, tf.Tensor]\n\nCreates context and example inputs.\n\n#### Example usage:\n\n model_builder = SimpleModelBuilder(\n {},\n {\"example_feature_1\": tf.io.FixedLenFeature(\n shape=(1,), dtype=tf.float32, default_value=0.0)},\n \"list_mask\", \"model_builder\")\n context_inputs, example_inputs, mask = model_builder.create_inputs()\n\n\u003cbr /\u003e\n\n| Returns ||\n|------------------|------------------------------------------------|\n| A tuple of ||\n| `context_inputs` | maps from context feature keys to Keras Input. |\n| `example_inputs` | maps from example feature keys to Keras Input. |\n| `mask` | Keras Input for the mask feature. |\n\n\u003cbr /\u003e\n\n### `preprocess`\n\n[View source](https://github.com/tensorflow/ranking/blob/v0.5.3/tensorflow_ranking/python/keras/model.py#L213-L247) \n\n @abc.abstractmethod\n preprocess(\n context_inputs: ../../../tfr/keras/model/TensorDict,\n example_inputs: ../../../tfr/keras/model/TensorDict,\n mask: tf.Tensor\n ) -\u003e Tuple[../../../tfr/keras/model/TensorDict, ../../../tfr/keras/model/TensorDict]\n\nPreprocesses context and example inputs.\n\n#### Example usage:\n\n model_builder = SimpleModelBuilder(\n {},\n {\"example_feature_1\": tf.io.FixedLenFeature(\n shape=(1,), dtype=tf.float32, default_value=0.0)},\n \"list_mask\", \"model_builder\")\n context_inputs, example_inputs, mask = model_builder.create_inputs()\n context_features, example_features = model_builder.preprocess(\n context_inputs, example_inputs, mask)\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n| Args ||\n|------------------|-------------------------------------------------------------------------------------------------------------|\n| `context_inputs` | maps context feature keys to [`tf.keras.Input`](https://www.tensorflow.org/api_docs/python/tf/keras/Input). |\n| `example_inputs` | maps example feature keys to [`tf.keras.Input`](https://www.tensorflow.org/api_docs/python/tf/keras/Input). |\n| `mask` | \\[batch_size, list_size\\]-tensor of mask for valid examples. |\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n| Returns ||\n|--------------------|---------------------------------------------------------------------------------------------------------------------|\n| A tuple of ||\n| `context_features` | maps from context feature keys to \\[batch_size, feature_dims\\]-tensors of preprocessed context features. |\n| `example_features` | maps from example feature keys to \\[batch_size, list_size, feature_dims\\]-tensors of preprocessed example features. |\n\n\u003cbr /\u003e\n\n### `score`\n\n[View source](https://github.com/tensorflow/ranking/blob/v0.5.3/tensorflow_ranking/python/keras/model.py#L249-L283) \n\n @abc.abstractmethod\n score(\n context_features: ../../../tfr/keras/model/TensorDict,\n example_features: ../../../tfr/keras/model/TensorDict,\n mask: tf.Tensor\n ) -\u003e Union[TensorLike, TensorDict]\n\nScores all examples and returns outputs.\n\n#### Example usage:\n\n model_builder = SimpleModelBuilder(\n {},\n {\"example_feature_1\": tf.io.FixedLenFeature(\n shape=(1,), dtype=tf.float32, default_value=0.0)},\n \"list_mask\", \"model_builder\")\n context_inputs, example_inputs, mask = model_builder.create_inputs()\n context_features, example_features = model_builder.preprocess(\n context_inputs, example_inputs, mask)\n scores = model_builder.score(context_features, example_features)\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n| Args ||\n|--------------------|---------------------------------------------------------------------------------------------------------------------|\n| `context_features` | maps from context feature keys to \\[batch_size, feature_dims\\]-tensors of preprocessed context features. |\n| `example_features` | maps from example feature keys to \\[batch_size, list_size, feature_dims\\]-tensors of preprocessed example features. |\n| `mask` | \\[batch_size, list_size\\]-tensor of mask for valid examples. |\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n| Returns ||\n|---|---|\n| A \\[batch_size, list_size\\]-tensor of logits or a dict mapping task name to logits in the multi-task setting. ||\n\n\u003cbr /\u003e"]]