#tensorflow #generator #lstm
#тензорный поток #генератор #lstm
Вопрос:
Я создаю LSTM ANN, и я не уверен в использовании генератора в моем случае. Сеть должна иметь несколько гиперпараметров, которые она должна повторять, например, эпохи, функции активации …, однако, если в этом случае используется генератор, каждая итерация обучается на разных наборах, верно? Итак, правильнее использовать список или массив вместо этого? Спасибо
for epoch in EPOCHS do:
for activation in ACTIVATION do:
trainLSTM(epoch, activation)
save best model
Ответ №1:
Рекомендуется использовать Generator
for Time Series Data
, который был подробно объяснен в руководстве по анализу временных рядов Tensorflow. Код для такого Generator
показан ниже:
class WindowGenerator():
def __init__(self, input_width, label_width, shift,
train_df=train_df, val_df=val_df, test_df=test_df,
label_columns=None):
# Store the raw data.
self.train_df = train_df
self.val_df = val_df
self.test_df = test_df
# Work out the label column indices.
self.label_columns = label_columns
if label_columns is not None:
self.label_columns_indices = {name: i for i, name in
enumerate(label_columns)}
self.column_indices = {name: i for i, name in
enumerate(train_df.columns)}
# Work out the window parameters.
self.input_width = input_width
self.label_width = label_width
self.shift = shift
self.total_window_size = input_width shift
self.input_slice = slice(0, input_width)
self.input_indices = np.arange(self.total_window_size)[self.input_slice]
self.label_start = self.total_window_size - self.label_width
self.labels_slice = slice(self.label_start, None)
self.label_indices = np.arange(self.total_window_size)[self.labels_slice]
def __repr__(self):
return 'n'.join([
f'Total window size: {self.total_window_size}',
f'Input indices: {self.input_indices}',
f'Label indices: {self.label_indices}',
f'Label column name(s): {self.label_columns}'])
Например, если ваш Data
относится к периоду с 1960 года (1 января) по 2016 год (31 декабря) и вы хотите получить predict
прогноз погоды за весь февраль 2017 года, рассматривая окно данных за последние 2 года, значения аргументов вышеуказанного класса показаны ниже:
input_width: 2 Years => 365 * 2 = 730
label_width: Entire Feb Month => 28
shift: We are not predicting from Jan 1st 2017 but are shifting by entire Month of Jan => 30
train_df, test_df, val_df => Self Explanatory
label_columns : Name of the Target Column