Функция timeseries_dataset_from_array
Функция timeseries_dataset_from_array создает датасет
временных рядов из переданного массива данных.
Первым параметром функция принимает массив данных,
вторым - массив целей, третьим - длину последовательности
sequence_length. Дополнительными параметрами можно
задать размер батча batch_size, сдвиг между окнами
sequence_stride, шаг выборки sampling_rate
и другие настройки формирования окон.
Синтаксис
tf.keras.utils.timeseries_dataset_from_array(
data,
targets,
sequence_length,
sequence_stride=1,
sampling_rate=1,
batch_size=128,
shuffle=False,
seed=None,
start_index=None,
end_index=None
)
Пример
Давайте создадим простой датасет временного ряда из массива чисел и выведем его элементы:
import tensorflow as tf
data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
targets = [2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
dataset = tf.keras.utils.timeseries_dataset_from_array(
data,
targets,
sequence_length=3,
batch_size=2
)
for batch in dataset:
print(batch)
Результат выполнения кода:
(<tf.Tensor: shape=(2, 3), dtype=int32, numpy=
array([[1, 2, 3],
[2, 3, 4]], dtype=int32)>, <tf.Tensor: shape=(2,), dtype=int32, numpy=array([4, 5], dtype=int32)>)
(<tf.Tensor: shape=(2, 3), dtype=int32, numpy=
array([[3, 4, 5],
[4, 5, 6]], dtype=int32)>, <tf.Tensor: shape=(2,), dtype=int32, numpy=array([6, 7], dtype=int32)>)
(<tf.Tensor: shape=(2, 3), dtype=int32, numpy=
array([[5, 6, 7],
[6, 7, 8]], dtype=int32)>, <tf.Tensor: shape=(2,), dtype=int32, numpy=array([8, 9], dtype=int32)>)
(<tf.Tensor: shape=(1, 3), dtype=int32, numpy=
array([[7, 8, 9]], dtype=int32)>, <tf.Tensor: shape=(1,), dtype=int32, numpy=array([10], dtype=int32)>)
Пример
Давайте создадим датасет с настраиваемым сдвигом окон
sequence_stride и шагом выборки sampling_rate:
Результат выполнения кода:
(<tf.Tensor: shape=(2, 3), dtype=int32, numpy=
array([[1, 2, 3],
[3, 4, 5]], dtype=int32)>, <tf.Tensor: shape=(2,), dtype=int32, numpy=array([4, 6], dtype=int32)>)
(<tf.Tensor: shape=(2, 3), dtype=int32, numpy=
array([[5, 6, 7],
[7, 8, 9]], dtype=int32)>, <tf.Tensor: shape=(2,), dtype=int32, numpy=array([8, 10], dtype=int32)>)
Пример
Давайте создадим датасет без целей, чтобы использовать его для авторегрессионного прогнозирования:
import tensorflow as tf
data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
dataset = tf.keras.utils.timeseries_dataset_from_array(
data,
targets=None,
sequence_length=4,
batch_size=2
)
for batch in dataset:
print(batch)
Результат выполнения кода:
tf.Tensor(
[[1 2 3 4]
[2 3 4 5]], shape=(2, 4), dtype=int32)
tf.Tensor(
[[3 4 5 6]
[4 5 6 7]], shape=(2, 4), dtype=int32)
tf.Tensor(
[[5 6 7 8]
[6 7 8 9]], shape=(2, 4), dtype=int32)
tf.Tensor(
[[7 8 9 10]], shape=(1, 4), dtype=int32)
Смотрите также
-
функцию
split_dataset,
которая разделяет датасет на несколько частей -
функцию
normalize,
которая нормализует данные датасета -
класс
TextLineDataset,
который создает датасет из строк текстового файла -
класс
TFRecordDataset,
который создает датасет из файлов формата TFRecord