tf.train.SequenceExample
| Просмотреть исходный код на GitHub |
Формат 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типTатрибута, определенного одним и тем же ключом, должен быть одинаковым. Запись без каких-либо значений может служить пустым атрибутом. - Если
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: { }
} }
Условно согласованная пара SequenceExamples, конфигурация парсера определяет, должна ли вторая 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 ] } } }
} }
Условно согласованная пара SequenceExamples; конфигурация парсера определяет, должны ли размеры атрибутов совпадать:
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/versions/r2.9/api_docs/python/tf/train/SequenceExample