Spec-Zone.ru › TensorFlow

tf.io.parse_example

Парсит Example протоколы в dict тензоров.

tf.io.parse_example(
    serialized, features, example_names=None, name=None
)

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

Используется в руководстве Используется в учебниках
  • tf.data: Создание входных конвейеров TensorFlow
  • Разорванные тензоры
  • TFX Keras Компонентный учебник
  • Обработка данных с помощью TensorFlow Transform
  • Вступление к показателям справедливости
  • TFX Компонентный учебник для оценок
  • Инженерия признаков с помощью TFX конвейера и TensorFlow Transform

Парсит несколько сериализованных Example протоколов, заданных в serialized. Мы называем serialized партией с batch_size множеством записей отдельных Example протоколов.

example_names может содержать описательные имена для соответствующих сериализованных протоколов. Они могут быть полезны для отладки, но не влияют на вывод. Если не None, example_names должен иметь такую же длину, как и serialized.

Этот оператор парсит сериализованные примеры в словарь, сопоставляющий ключи с Tensor SparseTensor и RaggedTensor объектами. features — это отображение ключей к VarLenFeature, SparseFeature, RaggedFeature и FixedLenFeature объектам. Каждый VarLenFeature и SparseFeature сопоставляется с SparseTensor; каждый FixedLenFeature сопоставляется с Tensor; и каждый RaggedFeature сопоставляется с RaggedTensor.

Каждый VarLenFeature сопоставляется с SparseTensor указанного типа, представляющего разреженную матрицу. Его индексы — [batch, index], где batch идентифицирует пример в serialized, а index — индекс значения в списке значений, связанных с этим признаком и примером.

Каждый SparseFeature сопоставляется с SparseTensor указанного типа, представляющего тензор dense_shape [batch_size] + SparseFeature.size. Его values берутся из признака в примерах с ключом value_key. values[i] берется из позиции k в признаке примера в записи партии batch. Эта позиционная информация записывается в indices[i] как [batch, index_0, index_1, ...], где index_j — значение k-th признака в примере с ключом SparseFeature.index_key[j]. Другими словами, мы разделяем индексы (кроме первого индекса, указывающего на запись партии) SparseTensor по размерности на разные признаки Example. Из-за сложности VarLenFeature следует предпочесть SparseFeature, когда это возможно.

Каждый FixedLenFeature df сопоставляется с Tensor указанного типа (или tf.float32, если не указано) и формой (serialized.size(),) + df.shape.

FixedLenFeature записи с default_value необязательны. Без значения по умолчанию, мы завершим работу, если этот Feature отсутствует в любом примере в serialized.

Каждый FixedLenSequenceFeature df сопоставляется с Tensor указанного типа (или tf.float32, если не указано) и формой (serialized.size(), None) + df.shape. Все примеры в serialized будут дополнены default_value вдоль второй размерности.

Каждый RaggedFeature сопоставляется с RaggedTensor указанного типа. Он образуется путем объединения RaggedTensor для каждого примера, где RaggedTensor для каждого отдельного примера строится с использованием тензоров, указанных в RaggedTensor.values_key и RaggedTensor.partition. См. документацию tf.io.RaggedFeature для получения подробностей и примеров.

Примеры:

Например, если ожидается tf.float32 VarLenFeature ft и предоставлены три сериализованных Example:

serialized = [
  features
    { feature { key: "ft" value { float_list { value: [1.0, 2.0] } } } },
  features
    { feature []},
  features
    { feature { key: "ft" value { float_list { value: [3.0] } } }
]

то результат будет выглядеть так:

{"ft": SparseTensor(indices=[[0, 0], [0, 1], [2, 0]],
                    values=[1.0, 2.0, 3.0],
                    dense_shape=(3, 2)) }

Если вместо этого используется FixedLenSequenceFeature с default_value = -1.0 и shape=[], то результат будет выглядеть так:

{"ft": [[1.0, 2.0], [3.0, -1.0]]}

При двух Example входных протоколах в serialized:

[
  features {
    feature { key: "kw" value { bytes_list { value: [ "knit", "big" ] } } }
    feature { key: "gps" value { float_list { value: [] } } }
  },
  features {
    feature { key: "kw" value { bytes_list { value: [ "emmy" ] } } }
    feature { key: "dank" value { int64_list { value: [ 42 ] } } }
    feature { key: "gps" value { } }
  }
]

И аргументах

example_names: ["input0", "input1"],
features: {
    "kw": VarLenFeature(tf.string),
    "dank": VarLenFeature(tf.int64),
    "gps": VarLenFeature(tf.float32),
}

Результат — словарь:

{
  "kw": SparseTensor(
      indices=[[0, 0], [0, 1], [1, 0]],
      values=["knit", "big", "emmy"]
      dense_shape=[2, 2]),
  "dank": SparseTensor(
      indices=[[1, 0]],
      values=[42],
      dense_shape=[2, 1]),
  "gps": SparseTensor(
      indices=[],
      values=[],
      dense_shape=[2, 0]),
}

Для плотных результатов в двух сериализованных Example:

[
  features {
    feature { key: "age" value { int64_list { value: [ 0 ] } } }
    feature { key: "gender" value { bytes_list { value: [ "f" ] } } }
   },
   features {
    feature { key: "age" value { int64_list { value: [] } } }
    feature { key: "gender" value { bytes_list { value: [ "f" ] } } }
  }
]

Мы можем использовать аргументы:

example_names: ["input0", "input1"],
features: {
    "age": FixedLenFeature([], dtype=tf.int64, default_value=-1),
    "gender": FixedLenFeature([], dtype=tf.string),
}

И ожидаемый результат:

{
  "age": [[0], [-1]],
  "gender": [["f"], ["f"]],
}

Альтернативой VarLenFeature для получения SparseTensor является SparseFeature. Например, при двух Example входных протоколах в serialized:

[
  features {
    feature { key: "val" value { float_list { value: [ 0.5, -1.0 ] } } }
    feature { key: "ix" value { int64_list { value: [ 3, 20 ] } } }
  },
  features {
    feature { key: "val" value { float_list { value: [ 0.0 ] } } }
    feature { key: "ix" value { int64_list { value: [ 42 ] } } }
  }
]

И аргументах

example_names: ["input0", "input1"],
features: {
    "sparse": SparseFeature(
        index_key="ix", value_key="val", dtype=tf.float32, size=100),
}

Результат — словарь:

{
  "sparse": SparseTensor(
      indices=[[0, 3], [0, 20], [1, 42]],
      values=[0.5, -1.0, 0.0]
      dense_shape=[2, 100]),
}

См. документацию tf.io.RaggedFeature для примеров, демонстрирующих, как использовать RaggedFeature для получения RaggedTensor.

Аргументы
serialized Вектор (1-мерный тензор) строк, пакет бинарных сериализованных Example протоколов.
features Отображение ключей признаков к FixedLenFeature, VarLenFeature, SparseFeature и RaggedFeature значениям.
example_names Вектор (1-мерный тензор) строк (необязательно), имена сериализованных протоколов в пакете.
name Имя для этой операции (необязательно).
Возвращает
dict отображение ключей признаков к Tensor, SparseTensor и RaggedTensor значениям.
Возбуждает
ValueError если какой-либо признак недействителен.

© 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/parse_example

Spec-Zone.ru

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