Метод window класса Dataset
Метод window применяется к датасету и разбивает
его элементы на вложенные датасеты-окна фиксированного
размера. Первым параметром передается размер окна
size, вторым - шаг сдвига окна shift,
третьим - параметр stride, задающий шаг между
элементами внутри окна, четвертым - drop_remainder,
определяющий, отбрасывать ли неполное последнее окно.
Метод возвращает новый датасет, элементами которого
являются вложенные датасеты.
Синтаксис
Dataset.window(size, shift=None, stride=1, drop_remainder=False)
Пример
Давайте создадим датасет из чисел и разобьем его на окна
размером 3:
import tensorflow as tf
dataset = tf.data.Dataset.from_tensor_slices([1, 2, 3, 4, 5, 6, 7, 8, 9])
windowed = dataset.window(size=3)
for window in windowed:
print(list(window.as_numpy_iterator()))
Результат выполнения кода:
[1, 2, 3]
[4, 5, 6]
[7, 8, 9]
Пример
Давайте зададим шаг сдвига окна 2, чтобы окна
перекрывались:
import tensorflow as tf
dataset = tf.data.Dataset.from_tensor_slices([1, 2, 3, 4, 5, 6, 7, 8, 9])
windowed = dataset.window(size=3, shift=2)
for window in windowed:
print(list(window.as_numpy_iterator()))
Результат выполнения кода:
[1, 2, 3]
[3, 4, 5]
[5, 6, 7]
[7, 8, 9]
[9]
Пример
Давайте отбросим неполное последнее окно с помощью
параметра drop_remainder:
import tensorflow as tf
dataset = tf.data.Dataset.from_tensor_slices([1, 2, 3, 4, 5, 6, 7, 8, 9])
windowed = dataset.window(size=3, shift=2, drop_remainder=True)
for window in windowed:
print(list(window.as_numpy_iterator()))
Результат выполнения кода:
[1, 2, 3]
[3, 4, 5]
[5, 6, 7]
[7, 8, 9]
Пример
Давайте используем параметр stride, чтобы брать
каждый второй элемент внутри окна:
import tensorflow as tf
dataset = tf.data.Dataset.from_tensor_slices([1, 2, 3, 4, 5, 6, 7, 8, 9])
windowed = dataset.window(size=3, shift=1, stride=2, drop_remainder=True)
for window in windowed:
print(list(window.as_numpy_iterator()))
Результат выполнения кода:
[1, 3, 5]
[2, 4, 6]
[3, 5, 7]
[4, 6, 8]
[5, 7, 9]
Смотрите также
-
класс
Dataset,
который представляет набор данных -
метод
batch,
который объединяет элементы в пакеты -
метод
group_by_window,
который группирует элементы по размеру окна -
метод
from_tensor_slices,
который создает датасет из тензора