description: Configuration for passing a RaggedTensor input feature.

tf.io.RaggedFeature

Configuration for passing a RaggedTensor input feature.

value_key specifies the feature key for a variable-length list of values; and partitions specifies zero or more feature keys for partitioning those values into higher dimensions. Each element of partitions must be one of the following:

Where key is a feature key whose values are used to partition the values. Partitions are listed from outermost to innermost.

There is one exception: if the final (i.e., innermost) element(s) of partitions are UniformRowLengths, then the values are simply reshaped (as a higher-dimensional tf.Tensor), rather than being wrapped in a tf.RaggedTensor.

Examples

>>> import google.protobuf.text_format as pbtext
>>> example_batch = [
...   pbtext.Merge(r'''
...     features {
...       feature {key: "v" value {int64_list {value: [3, 1, 4, 1, 5, 9]}}}
...       feature {key: "s1" value {int64_list {value: [0, 2, 3, 3, 6]}}}
...       feature {key: "s2" value {int64_list {value: [0, 2, 3, 4]}}}
...     }''', tf.train.Example()).SerializeToString(),
...   pbtext.Merge(r'''
...     features {
...       feature {key: "v" value {int64_list {value: [2, 7, 1, 8, 2, 8, 1]}}}
...       feature {key: "s1" value {int64_list {value: [0, 3, 4, 5, 7]}}}
...       feature {key: "s2" value {int64_list {value: [0, 1, 1, 4]}}}
...     }''', tf.train.Example()).SerializeToString()]
>>> features = {
...     # Zero partitions: returns 1D tf.Tensor for each Example.
...     'f1': tf.io.RaggedFeature(value_key="v", dtype=tf.int64),
...     # One partition: returns 2D tf.RaggedTensor for each Example.
...     'f2': tf.io.RaggedFeature(value_key="v", dtype=tf.int64, partitions=[
...         tf.io.RaggedFeature.RowSplits("s1")]),
...     # Two partitions: returns 3D tf.RaggedTensor for each Example.
...     'f3': tf.io.RaggedFeature(value_key="v", dtype=tf.int64, partitions=[
...         tf.io.RaggedFeature.RowSplits("s2"),
...         tf.io.RaggedFeature.RowSplits("s1")])
... }
>>> feature_dict = tf.io.parse_single_example(example_batch[0], features)
>>> for (name, val) in sorted(feature_dict.items()):
...   print('%s: %s' % (name, val))
f1: tf.Tensor([3 1 4 1 5 9], shape=(6,), dtype=int64)
f2: <tf.RaggedTensor [[3, 1], [4], [], [1, 5, 9]]>
f3: <tf.RaggedTensor [[[3, 1], [4]], [[]], [[1, 5, 9]]]>
>>> feature_dict = tf.io.parse_example(example_batch, features)
>>> for (name, val) in sorted(feature_dict.items()):
...   print('%s: %s' % (name, val))
f1: <tf.RaggedTensor [[3, 1, 4, 1, 5, 9],
                      [2, 7, 1, 8, 2, 8, 1]]>
f2: <tf.RaggedTensor [[[3, 1], [4], [], [1, 5, 9]],
                      [[2, 7, 1], [8], [2], [8, 1]]]>
f3: <tf.RaggedTensor [[[[3, 1], [4]], [[]], [[1, 5, 9]]],
                      [[[2, 7, 1]], [], [[8], [2], [8, 1]]]]>

Fields:

dtype

value_key

partitions

row_splits_dtype

validate

Child Classes

class RowLengths

class RowLimits

class RowSplits

class RowStarts

class UniformRowLength

class ValueRowIds