Класс Iterator
Класс Iterator представляет собой итератор
для набора данных TensorFlow. Он позволяет
последовательно извлекать элементы из
tf.data.Dataset по одному с помощью
метода get_next. Итератор создается
через метод iter набора данных.
Класс относится к модулю tf.data и
используется для ручного управления процессом
чтения данных в циклах обучения.
Синтаксис
dataset = tf.data.Dataset.from_tensor_slices(data)
iterator = iter(dataset)
element = iterator.get_next()
Пример
Давайте создадим набор данных из тензора и получим его элементы через итератор:
import tensorflow as tf
dataset = tf.data.Dataset.from_tensor_slices([1, 2, 3, 4, 5])
iterator = iter(dataset)
print(iterator.get_next())
print(iterator.get_next())
print(iterator.get_next())
Результат выполнения кода:
tf.Tensor(1, shape=(), dtype=int32)
tf.Tensor(2, shape=(), dtype=int32)
tf.Tensor(3, shape=(), dtype=int32)
Пример
Давайте переберём все элементы набора данных в цикле с помощью итератора:
<+python+>
import tensorflow as tf
dataset = tf.data.Dataset.from_tensor_slices([1, 2, 3, 4, 5])
for element in iter(dataset):
print(element.numpy())
<-python+>
Результат выполнения кода:
1
2
3
4
5
Пример
Давайте создадим итератор с помощью метода
make_one_shot_iterator и применим
преобразование batch к набору данных:
import tensorflow as tf
dataset = tf.data.Dataset.from_tensor_slices([1, 2, 3, 4, 5])
dataset = dataset.batch(2)
iterator = iter(dataset)
print(iterator.get_next())
print(iterator.get_next())
print(iterator.get_next())
Результат выполнения кода:
tf.Tensor([1 2], shape=(2,), dtype=int32)
tf.Tensor([3 4], shape=(2,), dtype=int32)
tf.Tensor([5], shape=(1,), dtype=int32)
Смотрите также
-
класс
TFRecordDataset,
который создает набор данных из файлов TFRecord -
класс
TextLineDataset,
который создает набор данных из текстовых файлов -
класс
FixedLengthRecordDataset,
который создает набор данных из файлов фиксированной длины -
функцию
timeseries_dataset_from_array,
которая создает набор данных временных рядов