Функция parse_sequence_example
Функция parse_sequence_example преобразует
сериализованный протокол SequenceExample
в словарь тензоров. Первым параметром передается
скалярный тензор типа string, содержащий
сериализованные данные. Вторым параметром
передается словарь context_features
с описанием контекстных признаков. Третьим
параметром передается словарь sequence_features
с описанием последовательных признаков. Функция
возвращает кортеж из двух словарей: первый
содержит контекстные тензоры, второй - последовательные.
Синтаксис
tf.io.parse_sequence_example(
serialized,
context_features=None,
sequence_features=None,
example_names=None,
name=None
)
Пример
Давайте создадим простой SequenceExample
с контекстным признаком context_feature
и последовательным признаком sequence_feature,
а затем разберем его:
import tensorflow as tf
example = tf.train.SequenceExample()
example.context.feature["context_feature"].int64_list.value.append(5)
example.feature_lists.feature_list["sequence_feature"].feature.add().int64_list.value.append(1)
example.feature_lists.feature_list["sequence_feature"].feature.add().int64_list.value.append(2)
example.feature_lists.feature_list["sequence_feature"].feature.add().int64_list.value.append(3)
serialized = example.SerializeToString()
context, sequence = tf.io.parse_sequence_example(
serialized,
context_features={
"context_feature": tf.io.FixedLenFeature([], dtype=tf.int64)
},
sequence_features={
"sequence_feature": tf.io.FixedLenSequenceFeature([], dtype=tf.int64)
}
)
print(context)
print(sequence)
Результат выполнения кода:
{'context_feature': <tf.Tensor: shape=(), dtype=int64, numpy=5>}
{'sequence_feature': <tf.Tensor: shape=(3,), dtype=int64, numpy=array([1, 2, 3])>}
Пример
Давайте разберем SequenceExample
с несколькими последовательностями разной длины
и строковым контекстным признаком:
import tensorflow as tf
example = tf.train.SequenceExample()
example.context.feature["name"].bytes_list.value.append(b"abcde")
example.feature_lists.feature_list["values"].feature.add().int64_list.value.append(10)
example.feature_lists.feature_list["values"].feature.add().int64_list.value.append(20)
example.feature_lists.feature_list["values"].feature.add().int64_list.value.append(30)
serialized = example.SerializeToString()
context, sequence = tf.io.parse_sequence_example(
serialized,
context_features={
"name": tf.io.FixedLenFeature([], dtype=tf.string)
},
sequence_features={
"values": tf.io.FixedLenSequenceFeature([], dtype=tf.int64)
}
)
print(context["name"].numpy())
print(sequence["values"].numpy())
Результат выполнения кода:
b'abcde'
[10 20 30]
Пример
Давайте разберем SequenceExample
с пакетом из двух примеров и переменной длиной
последовательности:
import tensorflow as tf
def make_example(values):
example = tf.train.SequenceExample()
example.context.feature["id"].int64_list.value.append(len(values))
for v in values:
example.feature_lists.feature_list["seq"].feature.add().int64_list.value.append(v)
return example.SerializeToString()
serialized = tf.constant([make_example([1, 2, 3]), make_example([4, 5])])
context, sequence = tf.io.parse_sequence_example(
serialized,
context_features={
"id": tf.io.FixedLenFeature([], dtype=tf.int64)
},
sequence_features={
"seq": tf.io.FixedLenSequenceFeature([], dtype=tf.int64)
}
)
print(context["id"].numpy())
print(sequence["seq"])
Результат выполнения кода:
[3 2]
tf.Tensor(
[[1 2 3]
[4 5 0]], shape=(2, 3), dtype=int64)
Смотрите также
-
функцию
parse_example,
которая разбирает пакет Example -
функцию
parse_single_example,
которая разбирает один Example -
класс
FixedLenFeature,
который описывает признак фиксированной длины -
класс
FixedLenSequenceFeature,
который описывает последовательный признак