Генератор сборки Tensorflow для получения данных для прогнозирования TimeSeries - PullRequest
0 голосов
/ 07 февраля 2020

В настоящее время я начинаю с платформы Tensorflow. Я следовал руководству по структурированным данным, чтобы построить многомерную многошаговую модель для прогнозирования временных рядов погоды. Все работает нормально, за исключением того, что я хочу оптимизировать производительность и использование ОЗУ

Поэтому я хочу перестроить метод multivariate_data в генератор, который будет выдавать данные.

Данные о погоде считываются из CSV-файл через pandas и преобразовать в pandas dataframe.

df = pd.read_csv(csv_path)

Обучающие переменные

TRAIN_SPLIT = 300000
tf.random.set_seed(13)

features_considered = ['p (mbar)', 'T (degC)', 'rho (g/m**3)']
features = df[features_considered]
features.index = df['Date Time']

Стандартизация данных

dataset = features.values
data_mean = dataset[:TRAIN_SPLIT].mean(axis=0)
data_std = dataset[:TRAIN_SPLIT].std(axis=0)
dataset = (dataset - data_mean) / data_std

Моя попытка Многошаговая модель

import numpy as np
import pandas as pd


def multivariate_data(dataset, target, start_index, end_index, history_size,
                      target_size, step):

    start_index = start_index + history_size
    if end_index is None:
        end_index = len(dataset) - target_size

    for i in range(start_index, end_index):
        indices = range(i - history_size, i, step)
        data = dataset[indices]
        yield data
        yield target[i:i + target_size]

    yield np.array(dataset[indices]), np.array(target[i:i + target_size])

Оригинальный метод multivariate_data:

import numpy as np
import pandas as pd


def multivariate_data(dataset, target, start_index, end_index, history_size,
                      target_size, step, single_step=False):
    data = []
    labels = []

    start_index = start_index + history_size
    if end_index is None:
        end_index = len(dataset) - target_size

    for i in range(start_index, end_index):
        indices = range(i - history_size, i, step)
        data.append(dataset[indices])

        if single_step:
            labels.append(target[i + target_size])
        else:
            labels.append(target[i:i + target_size])

    return np.array(data), np.array(labels)

Я новичок в машинном обучении и буду признателен за любую помощь или руководство, как правильно переписать метод для извлечения данных , передайте это на тренинг и прогнозирование

...