РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
657 of 824 menu

Класс SparseFeature

Класс SparseFeature используется при разборе примеров tf.train.Example для описания разреженного признака, значения которого хранятся в нескольких полях прото (индексы, значения, форма). Класс применяется вместе с функцией parse_example и позволяет преобразовать разреженное представление в объект tf.sparse.SparseTensor. Первым параметром передается индекс - уникальное имя признака. Далее указываются имена полей прото для индексов, значений и формы, а также типы данных этих полей.

Синтаксис

tf.io.SparseFeature(index_key, value_key, dtype, size, already_sorted=False)

Параметры

Класс принимает следующие параметры:

  • index_key - имя поля прото, содержащего индексы разреженного признака
  • value_key - имя поля прото, содержащего значения разреженного признака
  • dtype - тип данных значений признака
  • size - размерность (форма) разреженного тензора
  • already_sorted - нужно ли сортировать индексы (по умолчанию False)

Пример

Давайте создадим описание разреженного признака с индексным полем index, полем значений value и размерностью 5:

import tensorflow as tf feature = tf.io.SparseFeature( index_key='index', value_key='value', dtype=tf.int64, size=5 ) print(feature)

Результат выполнения кода:

SparseFeature(index_key='index', value_key='value', dtype=tf.int64, size=5, already_sorted=False)

Пример

Давайте соберем пример tf.train.Example с разреженным признаком и распарсим его с помощью parse_example:

import tensorflow as tf example = tf.train.Example( features=tf.train.Features( feature={ 'index': tf.train.Feature( int64_list=tf.train.Int64List(value=[0, 2, 4]) ), 'value': tf.train.Feature( int64_list=tf.train.Int64List(value=[10, 20, 30]) ) } ) ) serialized = example.SerializeToString() feature_spec = { 'sparse': tf.io.SparseFeature( index_key='index', value_key='value', dtype=tf.int64, size=5 ) } res = tf.io.parse_example(serialized, feature_spec) print(res['sparse'])

Результат выполнения кода:

SparseTensor(indices=tf.Tensor( [[0] [2] [4]], shape=(3, 1), dtype=int64), values=tf.Tensor([10 20 30], shape=(3,), dtype=int64), dense_shape=tf.Tensor([5], shape=(1,), dtype=int64))

Пример

Давайте преобразуем полученный разреженный тензор в плотный с помощью метода to_dense:

import tensorflow as tf example = tf.train.Example( features=tf.train.Features( feature={ 'index': tf.train.Feature( int64_list=tf.train.Int64List(value=[1, 3]) ), 'value': tf.train.Feature( int64_list=tf.train.Int64List(value=[7, 9]) ) } ) ) serialized = example.SerializeToString() feature_spec = { 'sparse': tf.io.SparseFeature( index_key='index', value_key='value', dtype=tf.int64, size=5 ) } res = tf.io.parse_example(serialized, feature_spec) dense = tf.sparse.to_dense(res['sparse']) print(dense)

Результат выполнения кода:

tf.Tensor([[0 7 0 9 0]], shape=(1, 5), dtype=int64)

Смотрите также

  • функцию parse_example,
    которая разбирает сериализованные примеры в тензоры
  • класс VarLenFeature,
    который описывает признак переменной длины
  • класс FixedLenFeature,
    который описывает признак фиксированной длины
  • класс FixedLenSequenceFeature,
    который описывает последовательность фиксированной длины
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить