Функция parse_example
Функция parse_example преобразует сериализованные
сообщения Example (протоколы буферов) в словарь
тензоров. Первым параметром функция принимает тензор
строк с сериализованными примерами. Вторым параметром
передается словарь признаков features, где ключи -
это имена признаков, а значения - объекты
FixedLenFeature или VarLenFeature,
описывающие тип и форму данных. Третьим необязательным
параметром можно передать имя операции.
Синтаксис
tf.io.parse_example(serialized, features, [name], [example_names])
Пример
Давайте создадим один сериализованный пример с помощью
tf.train.Example и разберем его функцией
parse_example:
import tensorflow as tf
# Create a serialized Example
example = tf.train.Example(
features=tf.train.Features(
feature={
'width': tf.train.Feature(
float_list=tf.train.FloatList(value=[1.0])
),
'label': tf.train.Feature(
int64_list=tf.train.Int64List(value=[0])
)
}
)
)
serialized = example.SerializeToString()
# Define features to parse
features = {
'width': tf.io.FixedLenFeature([], tf.float32),
'label': tf.io.FixedLenFeature([], tf.int64)
}
# Parse the example
parsed = tf.io.parse_example(serialized, features)
print(parsed)
Результат выполнения кода:
{'width': <tf.Tensor: shape=(1,), dtype=float32, numpy=array([1.], dtype=float32)>, 'label': <tf.Tensor: shape=(1,), dtype=int64, numpy=array([0])>}
Пример
Давайте создадим два сериализованных примера и разберем их пакетом:
import tensorflow as tf
# Create two serialized Examples
example1 = tf.train.Example(
features=tf.train.Features(
feature={
'width': tf.train.Feature(
float_list=tf.train.FloatList(value=[1.0])
),
'label': tf.train.Feature(
int64_list=tf.train.Int64List(value=[0])
)
}
)
)
example2 = tf.train.Example(
features=tf.train.Features(
feature={
'width': tf.train.Feature(
float_list=tf.train.FloatList(value=[2.0])
),
'label': tf.train.Feature(
int64_list=tf.train.Int64List(value=[1])
)
}
)
)
# Serialize both examples
serialized = [
example1.SerializeToString(),
example2.SerializeToString()
]
# Define features to parse
features = {
'width': tf.io.FixedLenFeature([], tf.float32),
'label': tf.io.FixedLenFeature([], tf.int64)
}
# Parse the batch of examples
parsed = tf.io.parse_example(serialized, features)
print(parsed)
Результат выполнения кода:
{'width': <tf.Tensor: shape=(2,), dtype=float32, numpy=array([1., 2.], dtype=float32)>, 'label': <tf.Tensor: shape=(2,), dtype=int64, numpy=array([0, 1])>}
Пример
Давайте разберем пример с признаком переменной длины
VarLenFeature:
Результат выполнения кода:
{'values': <tensorflow.python.framework.sparse_tensor.SparseTensor object at ...>}
Смотрите также
-
функцию
parse_single_example,
которая разбирает один сериализованный пример -
функцию
parse_sequence_example,
которая разбирает последовательные примеры -
функцию
parse_tensor,
которая разбирает сериализованный тензор -
функцию
FixedLenFeature,
которая описывает признак фиксированной длины