<br />

|---|
| [![](https://www.tensorflow.org/images/GitHub-Mark-32px.png) View source on GitHub](https://github.com/tensorflow/datasets/blob/v4.9.10/tensorflow_datasets/core/features/sequence_feature.py#L36-L256) |

Composite `FeatureConnector` for a `dict` where each value is a list.

Inherits From: [`FeatureConnector`](https://www.tensorflow.org/datasets/api_docs/python/tfds/features/FeatureConnector)

    tfds.features.Sequence(
        feature: feature_lib.FeatureConnectorArg,
        length: Optional[int] = None,
        *,
        doc: feature_lib.DocArg = None
    )

`Sequence` correspond to sequence of [`tfds.features.FeatureConnector`](https://www.tensorflow.org/datasets/api_docs/python/tfds/features/FeatureConnector). At
generation time, a list for each of the sequence element is given. The output
of [`tf.data.Dataset`](https://www.tensorflow.org/api_docs/python/tf/data/Dataset) will batch all the elements of the sequence together.

If the length of the sequence is static and known in advance, it should be
specified in the constructor using the `length` param.

Note that `Sequence` does not support features which are of type
[`tf.io.FixedLenSequenceFeature`](https://www.tensorflow.org/api_docs/python/tf/io/FixedLenSequenceFeature).

#### Example:

#### At construction time:

    tfds.features.Sequence(tfds.features.Image(), length=NB_FRAME)

or:

    tfds.features.Sequence({
        'frame': tfds.features.Image(shape=(64, 64, 3))
        'action': tfds.features.ClassLabel(['up', 'down', 'left', 'right'])
    }, length=NB_FRAME)

During data generation:

    yield {
        'frame': np.ones(shape=(NB_FRAME, 64, 64, 3)),
        'action': ['left', 'left', 'up', ...],
    }

Tensor returned by `.as_dataset()`:

    {
        'frame': tf.Tensor(shape=(NB_FRAME, 64, 64, 3), dtype=tf.uint8),
        'action': tf.Tensor(shape=(NB_FRAME,), dtype=tf.int64),
    }

At generation time, you can specify a list of features dict, a dict of list
values or a stacked numpy array. The lists will automatically be distributed
into their corresponding `FeatureConnector`.

<br />

<br />

<br />

| ## Args ||
|---|---|
| `feature` | The features to wrap (any feature supported) |
| `length` | `int`, length of the sequence if static and known in advance |
| `doc` | Documentation of this feature (e.g. description). |

<br />

<br />

<br />

<br />

| ## Attributes ||
|---|---|
| `doc` | <br /> <br /> |
| `dtype` | Return the dtype (or dict of dtype) of this FeatureConnector. |
| `feature` | The inner feature. |
| `flat_features` | <br /> <br /> |
| `flat_sequence_ranks` | <br /> <br /> |
| `flat_serialized_info` | <br /> <br /> |
| `np_dtype` | <br /> <br /> |
| `numpy_dtype` | <br /> <br /> |
| `shape` | Return the shape (or dict of shape) of this FeatureConnector. |
| `tf_dtype` | <br /> <br /> |
| `tf_example_spec` | Returns the `tf.Example` proto structure. |

<br />

## Methods

### `catalog_documentation`

[View source](https://github.com/tensorflow/datasets/blob/v4.9.10/tensorflow_datasets/core/features/sequence_feature.py#L206-L234)

    catalog_documentation() -> List[feature_lib.CatalogFeatureDocumentation]

Returns the feature documentation to be shown in the catalog.

### `cls_from_name`

[View source](https://github.com/tensorflow/datasets/blob/v4.9.10/tensorflow_datasets/core/features/feature.py#L401-L428)

    @classmethod
    cls_from_name(
        python_class_name: str
    ) -> Type['FeatureConnector']

Returns the feature class for the given Python class.

### `decode_batch_example`

[View source](https://github.com/tensorflow/datasets/blob/v4.9.10/tensorflow_datasets/core/features/feature.py#L780-L830)

    decode_batch_example(
        tfexample_data
    )

Decode multiple features batched in a single tf.Tensor.

This function is used to decode features wrapped in
[`tfds.features.Sequence()`](https://www.tensorflow.org/datasets/api_docs/python/tfds/features/Sequence).
By default, this function apply `decode_example` on each individual
elements using [`tf.map_fn`](https://www.tensorflow.org/api_docs/python/tf/map_fn). However, for optimization, features can
overwrite this method to apply a custom batch decoding.

<br />

<br />

<br />

| Args ||
|---|---|
| `tfexample_data` | Same [`tf.Tensor`](https://www.tensorflow.org/api_docs/python/tf/Tensor) inputs as `decode_example`, but with and additional first dimension for the sequence length. |

<br />

<br />

<br />

<br />

| Returns ||
|---|---|
| `tensor_data` | Tensor or dictionary of tensor, output of the tf.data.Dataset object |

<br />

### `decode_batch_example_np`

[View source](https://github.com/tensorflow/datasets/blob/v4.9.10/tensorflow_datasets/core/features/feature.py#L832-L834)

    decode_batch_example_np(
        batch
    )

See decode_batch_example.

### `decode_example`

[View source](https://github.com/tensorflow/datasets/blob/v4.9.10/tensorflow_datasets/core/features/top_level_feature.py#L106-L109)

    decode_example(
        serialized_example, *, decoders=None
    )

Decode the feature dict to TF compatible input.

> [!NOTE]
> **Note:** If eager is not enabled, this function will be executed as a tensorflow graph (in [`tf.data.Dataset.map(features.decode_example)`](https://www.tensorflow.org/api_docs/python/tf/data/Dataset#map)).

<br />

<br />

<br />

| Args ||
|---|---|
| `tfexample_data` | Data or dictionary of data, as read by the tf-example reader. It correspond to the [`tf.Tensor()`](https://www.tensorflow.org/api_docs/python/tf/Tensor) (or dict of [`tf.Tensor()`](https://www.tensorflow.org/api_docs/python/tf/Tensor)) extracted from the [`tf.train.Example`](https://www.tensorflow.org/api_docs/python/tf/train/Example), matching the info defined in `get_serialized_info()`. |

<br />

<br />

<br />

<br />

| Returns ||
|---|---|
| `tensor_data` | Tensor or dictionary of tensor, output of the tf.data.Dataset object |

<br />

### `decode_example_np`

[View source](https://github.com/tensorflow/datasets/blob/v4.9.10/tensorflow_datasets/core/features/top_level_feature.py#L111-L114)

    decode_example_np(
        serialized_example, *, decoders=None
    )

Decode the example data into NumPy-compatible input.

<br />

<br />

<br />

| Args ||
|---|---|
| `example_data` | Value to convert to NumPy. |

<br />

<br />

<br />

<br />

| Returns ||
|---|---|
| `np_data` | Data as NumPy-compatible type: either a Python primitive (bytes, int, etc) or a NumPy array. |

<br />

### `decode_ragged_example`

[View source](https://github.com/tensorflow/datasets/blob/v4.9.10/tensorflow_datasets/core/features/feature.py#L836-L853)

    decode_ragged_example(
        tfexample_data
    )

Decode nested features from a tf.RaggedTensor.

This function is used to decode features wrapped in nested
[`tfds.features.Sequence()`](https://www.tensorflow.org/datasets/api_docs/python/tfds/features/Sequence).
By default, this function apply `decode_batch_example` on the flat values
of the ragged tensor. For optimization, features can
overwrite this method to apply a custom batch decoding.

<br />

<br />

<br />

| Args ||
|---|---|
| `tfexample_data` | [`tf.RaggedTensor`](https://www.tensorflow.org/api_docs/python/tf/RaggedTensor) inputs containing the nested encoded examples. |

<br />

<br />

<br />

<br />

| Returns ||
|---|---|
| `tensor_data` | The decoded [`tf.RaggedTensor`](https://www.tensorflow.org/api_docs/python/tf/RaggedTensor) or dictionary of tensor, output of the tf.data.Dataset object |

<br />

### `deserialize_example`

[View source](https://github.com/tensorflow/datasets/blob/v4.9.10/tensorflow_datasets/core/features/top_level_feature.py#L130-L150)

    deserialize_example(
        serialized_example: (tf.Tensor | bytes), *, decoders=None
    ) -> utils.TensorDict

Decodes the [`tf.train.Example`](https://www.tensorflow.org/api_docs/python/tf/train/Example) data into [`tf.Tensor`](https://www.tensorflow.org/api_docs/python/tf/Tensor).

See `serialize_example` to encode the data into proto.

<br />

<br />

<br />

| Args ||
|---|---|
| `serialized_example` | The tensor-like object containing the serialized [`tf.train.Example`](https://www.tensorflow.org/api_docs/python/tf/train/Example) proto. |
| `decoders` | Eventual decoders to apply (see [documentation](https://www.tensorflow.org/datasets/decode)) |

<br />

<br />

<br />

<br />

| Returns ||
|---|---|
| The decoded features tensors. ||

<br />

### `deserialize_example_np`

[View source](https://github.com/tensorflow/datasets/blob/v4.9.10/tensorflow_datasets/core/features/top_level_feature.py#L152-L159)

    deserialize_example_np(
        serialized_example: (tf.Tensor | bytes | memoryview), *, decoders=None
    ) -> utils.NpArrayOrScalarDict

### `encode_example`

[View source](https://github.com/tensorflow/datasets/blob/v4.9.10/tensorflow_datasets/core/features/sequence_feature.py#L133-L155)

    encode_example(
        example_dict
    )

Encode the feature dict into tf-example compatible input.

The input example_data can be anything that the user passed at data
generation. For example:

#### For features:

    features={
        'image': tfds.features.Image(),
        'custom_feature': tfds.features.CustomFeature(),
    }

At data generation (in `_generate_examples`), if the user yields:

    yield {
        'image': 'path/to/img.png',
        'custom_feature': [123, 'str', lambda x: x+1]
    }

<br />

<br />

| Then ||
|---|---|
| <br /> - [`tfds.features.Image.encode_example`](https://www.tensorflow.org/datasets/api_docs/python/tfds/features/Image#encode_example) will get `'path/to/img.png'` as input - `tfds.features.CustomFeature.encode_example` will get \`\[123, 'str', lambda x: x+1\] as input ||

<br />

<br />

<br />

<br />

| Args ||
|---|---|
| `example_data` | Value or dictionary of values to convert into tf-example compatible data. |

<br />

<br />

<br />

<br />

| Returns ||
|---|---|
| `tfexample_data` | Data or dictionary of data to write as tf-example. Data can be a list or numpy array. Note that numpy arrays are flattened so it's the feature connector responsibility to reshape them in `decode_example()`. Note that tf.train.Example only supports int64, float32 and string so the data returned here should be integer, float or string. User type can be restored in `decode_example()`. |

<br />

### `from_config`

[View source](https://github.com/tensorflow/datasets/blob/v4.9.10/tensorflow_datasets/core/features/feature.py#L646-L665)

    @classmethod
    from_config(
        root_dir: str
    ) -> FeatureConnector

Reconstructs the FeatureConnector from the config file.

#### Usage:

    features = FeatureConnector.from_config('path/to/dir')

<br />

<br />

<br />

| Args ||
|---|---|
| `root_dir` | Directory containing the features.json file. |

<br />

<br />

<br />

<br />

| Returns ||
|---|---|
| The reconstructed feature instance. ||

<br />

### `from_json`

[View source](https://github.com/tensorflow/datasets/blob/v4.9.10/tensorflow_datasets/core/features/feature.py#L434-L480)

    @classmethod
    from_json(
        value: Json
    ) -> FeatureConnector

FeatureConnector factory.

This function should be called from the [`tfds.features.FeatureConnector`](https://www.tensorflow.org/datasets/api_docs/python/tfds/features/FeatureConnector)
base class. Subclass should implement the `from_json_content`.

#### Example:

    feature = tfds.features.FeatureConnector.from_json(
        {'type': 'Image', 'content': {'shape': [32, 32, 3], 'dtype': 'uint8'} }
    )
    assert isinstance(feature, tfds.features.Image)

<br />

<br />

<br />

| Args ||
|---|---|
| `value` | `dict(type=, content=)` containing the feature to restore. Match dict returned by `to_json`. |

<br />

<br />

<br />

<br />

| Returns ||
|---|---|
| The reconstructed FeatureConnector. ||

<br />

### `from_json_content`

[View source](https://github.com/tensorflow/datasets/blob/v4.9.10/tensorflow_datasets/core/features/sequence_feature.py#L236-L250)

    @classmethod
    from_json_content(
        value: Union[Json, feature_pb2.Sequence]
    ) -> 'Sequence'

FeatureConnector factory (to overwrite).

Subclasses should overwrite this method. This method is used when
importing the feature connector from the config.

This function should not be called directly. [`FeatureConnector.from_json`](https://www.tensorflow.org/datasets/api_docs/python/tfds/features/FeatureConnector#from_json)
should be called instead.

See existing FeatureConnectors for implementation examples.

<br />

<br />

<br />

| Args ||
|---|---|
| `value` | FeatureConnector information represented as either Json or a Feature proto. The content must match what is returned by `to_json_content`. |
| `doc` | Documentation of this feature (e.g. description). |

<br />

<br />

<br />

<br />

| Returns ||
|---|---|
| The reconstructed FeatureConnector. ||

<br />

### `from_proto`

[View source](https://github.com/tensorflow/datasets/blob/v4.9.10/tensorflow_datasets/core/features/feature.py#L618-L632)

    @classmethod
    from_proto(
        feature_proto: feature_pb2.Feature
    ) -> T

Instantiates a feature from its proto representation.

### `get_serialized_info`

[View source](https://github.com/tensorflow/datasets/blob/v4.9.10/tensorflow_datasets/core/features/sequence_feature.py#L126-L131)

    get_serialized_info()

See base class for details.

### `get_tensor_info`

[View source](https://github.com/tensorflow/datasets/blob/v4.9.10/tensorflow_datasets/core/features/sequence_feature.py#L119-L124)

    get_tensor_info()

See base class for details.

### `get_tensor_spec`

[View source](https://github.com/tensorflow/datasets/blob/v4.9.10/tensorflow_datasets/core/features/feature.py#L361-L370)

    get_tensor_spec() -> TreeDict[tf.TensorSpec]

Returns the tf.TensorSpec of this feature (not the element spec!).

Note that the output of this method may not correspond to the element spec
of the dataset. For example, currently this method does not support
RaggedTensorSpec.

### `load_metadata`

[View source](https://github.com/tensorflow/datasets/blob/v4.9.10/tensorflow_datasets/core/features/sequence_feature.py#L171-L173)

    load_metadata(
        *args, **kwargs
    )

See base class for details.

### `repr_html`

[View source](https://github.com/tensorflow/datasets/blob/v4.9.10/tensorflow_datasets/core/features/feature.py#L855-L857)

    repr_html(
        ex: np.ndarray
    ) -> str

Returns the HTML str representation of the object.

### `repr_html_batch`

[View source](https://github.com/tensorflow/datasets/blob/v4.9.10/tensorflow_datasets/core/features/feature.py#L859-L874)

    repr_html_batch(
        ex: np.ndarray
    ) -> str

Returns the HTML str representation of the object (Sequence).

### `repr_html_ragged`

[View source](https://github.com/tensorflow/datasets/blob/v4.9.10/tensorflow_datasets/core/features/feature.py#L876-L878)

    repr_html_ragged(
        ex: np.ndarray
    ) -> str

Returns the HTML str representation of the object (Nested sequence).

### `save_config`

[View source](https://github.com/tensorflow/datasets/blob/v4.9.10/tensorflow_datasets/core/features/feature.py#L634-L644)

    save_config(
        root_dir: str
    ) -> None

Exports the `FeatureConnector` to a file.

<br />

<br />

<br />

| Args ||
|---|---|
| `root_dir` | `path/to/dir` containing the `features.json` |

<br />

### `save_metadata`

[View source](https://github.com/tensorflow/datasets/blob/v4.9.10/tensorflow_datasets/core/features/sequence_feature.py#L167-L169)

    save_metadata(
        *args, **kwargs
    )

See base class for details.

### `serialize_example`

[View source](https://github.com/tensorflow/datasets/blob/v4.9.10/tensorflow_datasets/core/features/top_level_feature.py#L116-L128)

    serialize_example(
        example_data
    ) -> bytes

Encodes nested data values into [`tf.train.Example`](https://www.tensorflow.org/api_docs/python/tf/train/Example) bytes.

See `deserialize_example` to decode the proto into [`tf.Tensor`](https://www.tensorflow.org/api_docs/python/tf/Tensor).

<br />

<br />

<br />

| Args ||
|---|---|
| `example_data` | Example data to encode (numpy-like nested dict) |

<br />

<br />

<br />

<br />

| Returns ||
|---|---|
| The serialized [`tf.train.Example`](https://www.tensorflow.org/api_docs/python/tf/train/Example). ||

<br />

### `to_json`

[View source](https://github.com/tensorflow/datasets/blob/v4.9.10/tensorflow_datasets/core/features/feature.py#L482-L545)

    to_json() -> Json

Exports the FeatureConnector to Json.

Each feature is serialized as a `dict(type=..., content=...)`.

- `type`: The cannonical name of the feature (`module.FeatureName`).
- `content`: is specific to each feature connector and defined in `to_json_content`. Can contain nested sub-features (like for [`tfds.features.FeaturesDict`](https://www.tensorflow.org/datasets/api_docs/python/tfds/features/FeaturesDict) and [`tfds.features.Sequence`](https://www.tensorflow.org/datasets/api_docs/python/tfds/features/Sequence)).

#### For example:

    tfds.features.FeaturesDict({
        'input': tfds.features.Image(),
        'target': tfds.features.ClassLabel(num_classes=10),
    })

#### Is serialized as:

    {
        "type": "tensorflow_datasets.core.features.features_dict.FeaturesDict",
        "content": {
            "input": {
                "type": "tensorflow_datasets.core.features.image_feature.Image",
                "content": {
                    "shape": [null, null, 3],
                    "dtype": "uint8",
                    "encoding_format": "png"
                }
            },
            "target": {
                "type":
                "tensorflow_datasets.core.features.class_label_feature.ClassLabel",
                "content": {
                  "num_classes": 10
                }
            }
        }
    }

<br />

<br />

<br />

| Returns ||
|---|---|
| A `dict(type=, content=)`. Will be forwarded to `from_json` when reconstructing the feature. ||

<br />

### `to_json_content`

[View source](https://github.com/tensorflow/datasets/blob/v4.9.10/tensorflow_datasets/core/features/sequence_feature.py#L252-L256)

    to_json_content() -> feature_pb2.Sequence

FeatureConnector factory (to overwrite).

This function should be overwritten by the subclass to allow re-importing
the feature connector from the config. See existing FeatureConnector for
example of implementation.

<br />

<br />

<br />

| Returns ||
|---|---|
| The FeatureConnector metadata in either a dict, or a Feature proto. This output is used in `from_json_content` when reconstructing the feature. ||

<br />

### `to_proto`

[View source](https://github.com/tensorflow/datasets/blob/v4.9.10/tensorflow_datasets/core/features/feature.py#L589-L616)

    to_proto() -> feature_pb2.Feature

Exports the FeatureConnector to the Feature proto.

For features that have a specific schema defined in a proto, this
function needs to be overriden. If there's no specific proto schema,
then the feature will be represented using JSON.

<br />

<br />

<br />

| Returns ||
|---|---|
| The feature proto describing this feature. ||

<br />

### `__contains__`

[View source](https://github.com/tensorflow/datasets/blob/v4.9.10/tensorflow_datasets/core/features/sequence_feature.py#L179-L180)

    __contains__(
        key: str
    ) -> bool

### `__getitem__`

[View source](https://github.com/tensorflow/datasets/blob/v4.9.10/tensorflow_datasets/core/features/sequence_feature.py#L175-L177)

    __getitem__(
        key
    )

Convenience method to access the underlying features.

<br />

<br />

<br />

| ## Class Variables ||
|---|---|
| ALIASES | `[]` |

<br />