Spec-Zone.ru › TensorFlow 2.9

tf.io.RaggedFeature

Настройка для передачи входного признака RaggedTensor.

Просмотр псевдонимов

Псевдонимы совместимости для миграции

См. Руководство по миграции для получения более подробной информации.

tf.compat.v1.io.RaggedFeature

tf.io.RaggedFeature(
    dtype,
    value_key=None,
    partitions=(),
    row_splits_dtype=tf.dtypes.int32,
    validate=False
)

value_key определяет ключ признака для переменной длины списка значений; а partitions определяет ноль или более ключей признаков для разделения этих значений на высшие измерения. Каждый элемент partitions должен быть одним из следующих:

  • tf.io.RaggedFeature.RowSplits(key: string)
  • tf.io.RaggedFeature.RowLengths(key: string)
  • tf.io.RaggedFeature.RowStarts(key: string)
  • tf.io.RaggedFeature.RowLimits(key: string)
  • tf.io.RaggedFeature.ValueRowIds(key: string)
  • tf.io.RaggedFeature.UniformRowLength(length: int).

Где key — ключ признака, значения которого используются для разделения значений. Разделы перечислены от внешнего к внутреннему.

  • Если len(partitions) == 0 (по умолчанию), то:

    • Признак из одного tf.Example анализируется в 1D tf.Tensor.
    • Признак из набора tf.Example анализируется в 2D tf.RaggedTensor, где внешнее измерение — измерение набора, а внутреннее (разреженное) измерение — длина признака в каждом примере.
  • Если len(partitions) == 1, то:

    • Признак из одного tf.Example анализируется в 2D tf.RaggedTensor, где значения, взятые из value_key разделены на строки с использованием ключа раздела.
    • Признак из набора tf.Example анализируется в 3D tf.RaggedTensor, где внешнее измерение — измерение набора, а два внутренних измерения формируются путем разделения значений value_key каждого примера на строки с использованием ключа раздела этого примера.
  • Если len(partitions) > 1, то:

    • Признак из одного tf.Example анализируется в tf.RaggedTensor, ранг которого len(partitions)+1, а ragged_rank — len(partitions).

    • Признак из набора tf.Example анализируется в tf.RaggedTensor, ранг которого len(partitions)+2, а ragged_rank — len(partitions)+1, где внешнее измерение — измерение набора.

Существует одно исключение: если конечный (то есть самый внутренний) элемент(ы) partitions являются UniformRowLengths, то значения просто преобразуются (как многомерный tf.Tensor), а не оборачиваются в tf.RaggedTensor.

Примеры

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

Поля:

  • dtype: Тип данных RaggedTensor. Должен быть одним из: tf.dtypes.int64, tf.dtypes.float32, tf.dtypes.string.
  • value_key: (Необязательно.) Ключ для Feature в входном Example, значения которого после обработки будут результатом RaggedTensor.flat_values. Если не указано, используется ключ для этого RaggedFeature.
  • partitions: (Необязательно.) Список объектов, определяющих тензоры разделения строк (от внешнего к внутреннему). Каждый элемент этого списка должен быть одним из:
    • tf.io.RaggedFeature.RowSplits(key: string)
    • tf.io.RaggedFeature.RowLengths(key: string)
    • tf.io.RaggedFeature.RowStarts(key: string)
    • tf.io.RaggedFeature.RowLimits(key: string)
    • tf.io.RaggedFeature.ValueRowIds(key: string)
    • tf.io.RaggedFeature.UniformRowLength(length: int). Где key — ключ для Feature в входном Example, значения которого после обработки станут тензором разделения строк.
  • row_splits_dtype: (Необязательно.) Тип данных для тензора(ов) разделения строк. Один из int32 или int64. По умолчанию int32.
  • validate: (Необязательно.) Булево значение, указывающее, следует ли проверять, образуют ли входные значения допустимый RaggedTensor. По умолчанию False.
Атрибуты
dtype Псевдоним namedtuple для поля номер 0
value_key Псевдоним namedtuple для поля номер 1
partitions Псевдоним namedtuple для поля номер 2
row_splits_dtype Псевдоним namedtuple для поля номер 3
validate Псевдоним namedtuple для поля номер 4

Подклассы

class RowLengths

class RowLimits

class RowSplits

class RowStarts

class UniformRowLength

class ValueRowIds

© 2022 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 4.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/versions/r2.9/api_docs/python/tf/io/RaggedFeature

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API