Spec-Zone.ru › TensorFlow

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
)

Используется в блокнотах

Используется в руководстве Используется в обучающих материалах
  • Ragged-тензоры
  • Конвейер TensorFlow Ranking Keras для распределенного обучения

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 преобразуется в одномерный tf.Tensor.
    • Признак из пакета tf.Examples преобразуется в двумерный tf.RaggedTensor, где внешнее измерение соответствует размерности пакета, а внутреннее (нерегулярное) измерение — длине признака в каждом примере.
  • Если len(partitions) == 1, то:

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

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

    • Признак из пакета tf.Examples преобразуется в 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, разобранный Tensor которого станет результирующим 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, разобранный Tensor которого станет результирующим тензором разбиения строк.
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/api_docs/python/tf/io/RaggedFeature

Spec-Zone.ru

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