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 Период между последовательными отдельными шагами времени в последовательностях. Для скорости 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: Временная регрессия для архитектур "многие-ко-многим".

Рассмотрим два массива скалярных значений 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