# tf.data.experimental.pad_to_cardinality

<br />

|---|
| [![](https://www.tensorflow.org/images/GitHub-Mark-32px.png) View source on GitHub](https://github.com/tensorflow/tensorflow/blob/v2.14.0/tensorflow/python/data/experimental/ops/pad_to_cardinality.py#L26-L105) |

Pads a dataset with fake elements to reach the desired cardinality.

#### View aliases


**Compat aliases for migration**

See
[Migration guide](https://www.tensorflow.org/guide/migrate) for
more details.

[`tf.compat.v1.data.experimental.pad_to_cardinality`](https://www.tensorflow.org/api_docs/python/tf/data/experimental/pad_to_cardinality)

<br />

    tf.data.experimental.pad_to_cardinality(
        cardinality, mask_key='valid'
    )

The dataset to pad must have a known and finite cardinality and contain
dictionary elements. The `mask_key` will be added to differentiate between
real and padding elements -- real elements will have a `<mask_key>=True` entry
while padding elements will have a `<mask_key>=False` entry.

#### Example usage:

    ds = tf.data.Dataset.from_tensor_slices({'a': [1, 2]})
    ds = ds.apply(tf.data.experimental.pad_to_cardinality(3))
    list(ds.as_numpy_iterator())
    [{'a': 1, 'valid': True}, {'a': 2, 'valid': True}, {'a': 0, 'valid': False}]

This can be useful, e.g. during eval, when partial batches are undesirable but
it is also important not to drop any data.

    ds = ...
    # Round up to the next full batch.
    target_cardinality = -(-ds.cardinality() // batch_size) * batch_size
    ds = ds.apply(tf.data.experimental.pad_to_cardinality(target_cardinality))
    # Set `drop_remainder` so that batch shape will be known statically. No data
    # will actually be dropped since the batch size divides the cardinality.
    ds = ds.batch(batch_size, drop_remainder=True)

<br />

<br />

<br />

| ## Args ||
|---|---|
| `cardinality` | The cardinality to pad the dataset to. |
| `mask_key` | The key to use for identifying real vs padding elements. |

<br />

<br />

<br />

<br />

| ## Returns ||
|---|---|
| A dataset transformation that can be applied via [`Dataset.apply()`](https://www.tensorflow.org/versions/r2.14/api_docs/python/tf/data/Dataset#apply). ||

<br />