Класс FixedLenFeature
Класс FixedLenFeature применяется при описании схемы признаков,
имеющих фиксированную длину. Он используется совместно с функциями
parse_single_example и parse_example для разбора
сериализованных примеров формата tf.Example. Первым параметром
передаётся список размеров (shape) признака, вторым - тип данных
(dtype), третьим - значение по умолчанию (default_value),
которое подставляется, если признак отсутствует в примере.
Если значение по умолчанию не задано, признак считается обязательным.
Синтаксис
tf.io.FixedLenFeature(shape, dtype, default_value=None)
Пример
Давайте создадим описание признака с фиксированной длиной
2 и типом tf.float32:
import tensorflow as tf
feature = tf.io.FixedLenFeature(shape=[2], dtype=tf.float32)
print(feature)
Результат выполнения кода:
FixedLenFeature(shape=[2], dtype=tf.float32, default_value=None)
Пример
Давайте разберём один сериализованный пример с признаком
FixedLenFeature:
import tensorflow as tf
# Build a serialized Example with a float list feature
example = tf.train.Example(features=tf.train.Features(feature={
'values': tf.train.Feature(float_list=tf.train.FloatList(value=[1.0, 2.0]))
}))
serialized = example.SerializeToString()
# Describe the feature schema
feature_spec = {
'values': tf.io.FixedLenFeature(shape=[2], dtype=tf.float32)
}
res = tf.io.parse_single_example(serialized, feature_spec)
print(res)
Результат выполнения кода:
{'values': <tf.Tensor: shape=(2,), dtype=float32, numpy=array([1., 2.], dtype=float32)>}
Пример
Давайте зададим значение по умолчанию для отсутствующего признака:
import tensorflow as tf
# Example without the 'values' feature
example = tf.train.Example(features=tf.train.Features(feature={}))
serialized = example.SerializeToString()
# Provide a default value for a missing feature
feature_spec = {
'values': tf.io.FixedLenFeature(
shape=[2], dtype=tf.float32, default_value=[0.0, 0.0]
)
}
res = tf.io.parse_single_example(serialized, feature_spec)
print(res)
Результат выполнения кода:
{'values': <tf.Tensor: shape=(2,), dtype=float32, numpy=array([0., 0.], dtype=float32)>}
Смотрите также
-
функцию
parse_single_example,
которая разбирает один сериализованный пример -
функцию
parse_example,
которая разбирает пакет сериализованных примеров -
класс
VarLenFeature,
который описывает признак переменной длины -
класс
FixedLenSequenceFeature,
который описывает последовательный признак фиксированной длины