Атрибут element_spec
Атрибут element_spec класса Dataset возвращает описание
структуры элементов датасета в виде объекта TensorSpec или
кортежа/словаря из TensorSpec. Каждый TensorSpec
содержит форму тензора, тип данных и, при необходимости, имя.
Атрибут доступен только для чтения и не принимает параметров.
Он особенно полезен при построении моделей, когда нужно заранее
знать форму входных данных.
Синтаксис
dataset.element_spec
Пример
Давайте создадим датасет из тензора и посмотрим на его
element_spec:
import tensorflow as tf
t = tf.constant([1, 2, 3, 4, 5])
dataset = tf.data.Dataset.from_tensor_slices(t)
print(dataset.element_spec)
Результат выполнения кода:
TensorSpec(shape=(None,), dtype=tf.int32, name=None)
Пример
Давайте создадим датасет из двумерного тензора и изучим форму элементов:
import tensorflow as tf
t = tf.constant([[1, 2, 3], [4, 5, 6]])
dataset = tf.data.Dataset.from_tensor_slices(t)
print(dataset.element_spec)
Результат выполнения кода:
TensorSpec(shape=(3,), dtype=tf.int32, name=None)
Пример
Давайте создадим датасет из кортежа тензоров, чтобы увидеть
вложенную структуру element_spec:
import tensorflow as tf
t1 = tf.constant([1, 2, 3, 4, 5])
t2 = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0])
dataset = tf.data.Dataset.from_tensor_slices((t1, t2))
print(dataset.element_spec)
Результат выполнения кода:
(TensorSpec(shape=(None,), dtype=tf.int32, name=None), TensorSpec(shape=(None,), dtype=tf.float32, name=None))
Пример
Давайте применим метод batch и посмотрим, как изменится
форма элементов в element_spec:
import tensorflow as tf
t = tf.constant([1, 2, 3, 4, 5])
dataset = tf.data.Dataset.from_tensor_slices(t)
dataset = dataset.batch(2)
print(dataset.element_spec)
Результат выполнения кода:
TensorSpec(shape=(None,), dtype=tf.int32, name=None)
Пример
Давайте создадим датасет из генератора и проверим его
element_spec:
import tensorflow as tf
def gen():
for i in range(5):
yield i
dataset = tf.data.Dataset.from_generator(
gen,
output_signature=tf.TensorSpec(shape=(), dtype=tf.int32)
)
print(dataset.element_spec)
Результат выполнения кода:
TensorSpec(shape=(), dtype=tf.int32, name=None)
Смотрите также
-
класс
Dataset,
который представляет собой набор элементов -
метод
from_tensor_slices,
который создает датасет из тензора -
метод
batch,
который объединяет элементы в батчи -
метод
as_numpy_iterator,
который возвращает итератор по numpy-массивам