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
)

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

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

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

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

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

Существует одно исключение: если последний (то есть самый внутренний) элемент(ы) partitions являются UniformRowLength, то значения просто переформировываются (как многомерный 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