Spec-Zone.ru › TensorFlow

tf.keras.preprocessing.timeseries_dataset_from_array

Создает набор данных со скользящими окнами для временного ряда, заданного в виде массива.

Просмотреть псевдонимы

Основные псевдонимы

tf.keras.utils.timeseries_dataset_from_array

tf.keras.preprocessing.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
)

Используется в блокнотах

Используется в руководствах
  • Прогнозирование временных рядов

Эта функция принимает последовательность точек данных, собранных через равные промежутки времени, а также параметры временного ряда, такие как длина последовательностей/окон, расстояние между двумя последовательностями/окнами и т. д., чтобы создавать пакеты входных данных и целевых значений временного ряда.

Аргументы
data Массив Numpy или тензор в eager-режиме, содержащий последовательные точки данных (временные шаги). Предполагается, что ось 0 соответствует измерению времени.
targets Целевые значения, соответствующие временным шагам в data. targets[i] должно быть целевым значением для окна, начинающегося с индекса i (см. пример 2 ниже). Передайте None, если у вас нет целевых данных (в этом случае набор данных будет возвращать только входные данные).
sequence_length Длина выходных последовательностей (в количестве временных шагов).
sequence_stride Интервал между последовательными выходными последовательностями. При шаге s выходные образцы будут начинаться с индексов data[i], data[i + s], data[i + 2 * s] и т. д.
sampling_rate Интервал между последовательными временными шагами внутри последовательностей. При значении rate r для создания последовательности образца используются временные шаги data[i], data[i + r], ... data[i + sequence_length].
batch_size Количество образцов временного ряда в каждом пакете (за исключением, возможно, последнего). Если значение None, данные не будут разбиваться на пакеты (набор данных будет возвращать отдельные образцы).
shuffle Следует ли перемешивать выходные образцы или выбирать их в хронологическом порядке.
seed Необязательное целое число; начальное значение генератора случайных чисел для перемешивания.
start_index Необязательное целое число; точки данных, предшествующие (не включая) start_index, не будут использоваться в выходных последовательностях. Это полезно, чтобы зарезервировать часть данных для тестирования или проверки.
end_index Необязательное целое число; точки данных, следующие за (не включая) end_index, не будут использоваться в выходных последовательностях. Это полезно, чтобы зарезервировать часть данных для тестирования или проверки.
Возвращает

Экземпляр tf.data.Dataset. Если передан targets, набор данных возвращает кортеж (batch_of_sequences, batch_of_targets). В противном случае набор данных возвращает только batch_of_sequences.

Пример 1:

Рассмотрим индексы [0, 1, ... 98]. При sequence_length=10, sampling_rate=2, sequence_stride=3, shuffle=False набор данных будет возвращать пакеты последовательностей, состоящих из следующих индексов:

First sequence:  [0  2  4  6  8 10 12 14 16 18]
Second sequence: [3  5  7  9 11 13 15 17 19 21]
Third sequence:  [6  8 10 12 14 16 18 20 22 24]
...
Last sequence:   [78 80 82 84 86 88 90 92 94 96]

В этом случае последние 2 точки данных отбрасываются, поскольку для их включения нельзя сформировать полную последовательность (следующая последовательность начиналась бы с индекса 81, а ее последний шаг выходил бы за пределы 98).

Пример 2: временная регрессия.

Рассмотрим массив data скалярных значений формы (steps,). Чтобы создать набор данных, использующий последние 10 временных шагов для прогнозирования следующего временного шага, воспользуйтесь следующим кодом:

input_data = data[:-10]
targets = data[10:]
dataset = timeseries_dataset_from_array(
    input_data, targets, sequence_length=10)
for batch in dataset:
  inputs, targets = batch
  assert np.array_equal(inputs[0], data[:10])  # First sequence: steps [0-9]
  # Corresponding target: step 10
  assert np.array_equal(targets[0], data[10])
  break

Пример 3: временная регрессия для архитектур many-to-many.

Рассмотрим два массива скалярных значений X и Y, оба формы (100,). Полученный набор данных должен состоять из образцов по 20 временных меток каждый. Образцы не должны перекрываться. Чтобы создать набор данных, использующий текущую временную метку для прогнозирования соответствующей целевой временной метки, воспользуйтесь следующим кодом:

X = np.arange(100)
Y = X*2

sample_length = 20
input_dataset = timeseries_dataset_from_array(
    X, None, sequence_length=sample_length, sequence_stride=sample_length)
target_dataset = timeseries_dataset_from_array(
    Y, None, sequence_length=sample_length, sequence_stride=sample_length)

for batch in zip(input_dataset, target_dataset):
    inputs, targets = batch
    assert np.array_equal(inputs[0], X[:sample_length])

    # second sample equals output timestamps 20-40
    assert np.array_equal(targets[1], Y[sample_length:2*sample_length])
    break

© 2022 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 4.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/api_docs/python/tf/keras/preprocessing/timeseries_dataset_from_array

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API