tf.train.SequenceExample
A 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 для приложения по рекомендации фильмов, которое записывает последовательность оценок пользователя. Независимые от времени признаки («регион», «возраст», «избранное») пользователя являются частью контекста. Последовательность фильмов, оцененных пользователем, является частью 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должны подчиняться тем же соглашениям, что и признаки соответствующего примера (см. выше).
feature_lists:
FeatureList Lможет отсутствовать в примере; от конфигурации парсера зависит, разрешено ли это или считается пустым списком (длиной ноль).- Если
FeatureList Lсуществует, он может быть пустым (длиной ноль). - Если
FeatureList Lне пустой, все признаки вFeatureListдолжны иметь тот же тип данныхT. Даже междуSequenceExampleтипыTFeatureList, определяемые одним и тем же ключом, должны быть одинаковыми. Запись без каких-либо значений может служить пустым признаком. - Если
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