tf.train.SequenceExample
Объект SequenceExample представляет собой последовательность признаков и некоторый контекст.
Его можно рассматривать как прототипную реализацию следующего типа Python:
Feature = Union[List[bytes],
List[int64],
List[float]]
class SequenceExample(typing.NamedTuple):
context: Dict[str, Feature]
feature_lists: Dict[str, List[Feature]]
Для реализации в виде протобуфов он разбивается на следующие подсообщения:
# tf.train.Feature
Feature = Union[List[bytes],
List[int64],
List[float]]
# tf.train.FeatureList
FeatureList = List[Feature]
# tf.train.FeatureLists
FeatureLists = Dict[str, FeatureList]
# tf.train.SequenceExample
class SequenceExample(typing.NamedTuple):
context: Dict[str, Feature]
feature_lists: FeatureLists
Чтобы выполнить разбор SequenceExample в TensorFlow, обратитесь к функции tf.io.parse_sequence_example.
context содержит признаки, применимые ко всему примеру. feature_lists содержат карту «ключ — значение», где каждому ключу соответствует повторяющийся набор tf.train.Features (tf.train.FeatureList). FeatureList представляет значения признака, определяемого ключом, во времени или в кадрах.
Ниже приведен SequenceExample для приложения рекомендаций фильмов, в котором записана последовательность оценок пользователя. Признаки, не зависящие от времени («locale», «age», «favorites»), описывающие пользователя, входят в контекст. Последовательность фильмов, которым пользователь поставил оценки, входит в feature_lists. Для каждого фильма в последовательности указаны его название и актеры, а также оценка пользователя. Эти сведения записаны в трех отдельных feature_list. В примере ниже всего два фильма. У всех трех feature_list — «movie_ratings», «movie_names» и «actors» — есть значение признака для обоих фильмов. Обратите внимание: «actors» сам по себе является bytes_list с несколькими строками для каждого фильма.
context: {
feature: {
key : "locale"
value: {
bytes_list: {
value: [ "pt_BR" ]
}
}
}
feature: {
key : "age"
value: {
float_list: {
value: [ 19.0 ]
}
}
}
feature: {
key : "favorites"
value: {
bytes_list: {
value: [ "Majesty Rose", "Savannah Outen", "One Direction" ]
}
}
}
}
feature_lists: {
feature_list: {
key : "movie_ratings"
value: {
feature: {
float_list: {
value: [ 4.5 ]
}
}
feature: {
float_list: {
value: [ 5.0 ]
}
}
}
}
feature_list: {
key : "movie_names"
value: {
feature: {
bytes_list: {
value: [ "The Shawshank Redemption" ]
}
}
feature: {
bytes_list: {
value: [ "Fight Club" ]
}
}
}
}
feature_list: {
key : "actors"
value: {
feature: {
bytes_list: {
value: [ "Tim Robbins", "Morgan Freeman" ]
}
}
feature: {
bytes_list: {
value: [ "Brad Pitt", "Edward Norton", "Helena Bonham Carter" ]
}
}
}
}
}
Соответствующий требованиям набор данных SequenceExample должен отвечать следующим соглашениям:
context:
- Все соответствующие требованиям признаки контекста
Kдолжны отвечать тем же соглашениям, что и признаки соответствующего требованиям Example (см. выше).
feature_lists:
FeatureList Lможет отсутствовать в примере; конфигурация парсера определяет, допустимо ли это или следует считать его пустым списком (нулевой длины).- Если
FeatureList Lсуществует, он может быть пустым (нулевой длины). - Если
FeatureList Lне пуст, все признаки внутриFeatureListдолжны иметь один и тот же тип данныхT. Даже в разныхSequenceExampleтипTобъектаFeatureList, определяемого одним и тем же ключом, должен совпадать. Запись без значений может служить пустым признаком. - Если
FeatureList Lне пуст, конфигурация парсера определяет, должны ли все признаки внутриFeatureListиметь одинаковый размер. То же правило действует для этогоFeatureListв нескольких примерах. - При моделировании последовательностей (пример) списки признаков представляют последовательность кадров. В этом случае все
FeatureListвSequenceExampleсодержат одинаковое количество сообщенийFeature, поэтому i-й элемент в каждомFeatureListотносится к i-му кадру (или временному шагу).
Примеры соответствующих и не соответствующих требованиям FeatureLists:
Соответствующий требованиям FeatureLists:
feature_lists: { feature_list: {
key: "movie_ratings"
value: { feature: { float_list: { value: [ 4.5 ] } }
feature: { float_list: { value: [ 5.0 ] } } }
} }
Не соответствующий требованиям FeatureLists (несовпадающие типы):
feature_lists: { feature_list: {
key: "movie_ratings"
value: { feature: { float_list: { value: [ 4.5 ] } }
feature: { int64_list: { value: [ 5 ] } } }
} }
Условно соответствующий требованиям FeatureLists: конфигурация парсера определяет, должны ли совпадать размеры признаков:
feature_lists: { feature_list: {
key: "movie_ratings"
value: { feature: { float_list: { value: [ 4.5 ] } }
feature: { float_list: { value: [ 5.0, 6.0 ] } } }
} }
Примеры соответствующих и не соответствующих требованиям SequenceExample:
Соответствующая требованиям пара SequenceExample:
feature_lists: { feature_list: {
key: "movie_ratings"
value: { feature: { float_list: { value: [ 4.5 ] } }
feature: { float_list: { value: [ 5.0 ] } } }
} }
feature_lists: { feature_list: {
key: "movie_ratings"
value: { feature: { float_list: { value: [ 4.5 ] } }
feature: { float_list: { value: [ 5.0 ] } }
feature: { float_list: { value: [ 2.0 ] } } }
} }
Соответствующая требованиям пара SequenceExample:
feature_lists: { feature_list: {
key: "movie_ratings"
value: { feature: { float_list: { value: [ 4.5 ] } }
feature: { float_list: { value: [ 5.0 ] } } }
} }
feature_lists: { feature_list: {
key: "movie_ratings"
value: { }
} }
Условно соответствующая требованиям пара SequenceExample: конфигурация парсера определяет, является ли второй feature_lists согласованным (нулевой длины) или недопустимым (отсутствует «movie_ratings»):
feature_lists: { feature_list: {
key: "movie_ratings"
value: { feature: { float_list: { value: [ 4.5 ] } }
feature: { float_list: { value: [ 5.0 ] } } }
} }
feature_lists: { }
Не соответствующая требованиям пара SequenceExample (несовпадающие типы):
feature_lists: { feature_list: {
key: "movie_ratings"
value: { feature: { float_list: { value: [ 4.5 ] } }
feature: { float_list: { value: [ 5.0 ] } } }
} }
feature_lists: { feature_list: {
key: "movie_ratings"
value: { feature: { int64_list: { value: [ 4 ] } }
feature: { int64_list: { value: [ 5 ] } }
feature: { int64_list: { value: [ 2 ] } } }
} }
Условно соответствующая требованиям пара SequenceExample; конфигурация парсера определяет, должны ли совпадать размеры признаков:
feature_lists: { feature_list: {
key: "movie_ratings"
value: { feature: { float_list: { value: [ 4.5 ] } }
feature: { float_list: { value: [ 5.0 ] } } }
} }
feature_lists: { feature_list: {
key: "movie_ratings"
value: { feature: { float_list: { value: [ 4.0 ] } }
feature: { float_list: { value: [ 5.0, 3.0 ] } }
} }
| Атрибуты | |
|---|---|
context | Features context |
feature_lists | FeatureLists feature_lists |
© 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/train/SequenceExample