ГРУ со случайными данными выбора в кератах - PullRequest
0 голосов
/ 06 мая 2018

Я использую рекуррентную сеть (в специальном GRU) для прогнозирования временного ряда с длиной 90 вхождений. Тип данных многофакторный, и следуйте этому примеру.

Многовариантный временной ряд

Вариант 1:

Я использую кераты для разработки рН

n_train_quarter = int(len(serie) * 0.75)
train = values[:n_train_quarter, :]
test = values[n_train_quarter:, :]
X_train, y_train = train[:, :-1], train[:, - 1]
X_test, y_test = test[:, :-1], test[:, - 1]

# All parameter can be changes kernel, activation, optimizer, ...
model = Sequential()
model.add(GRU(64, input_shape=(X_train.shape[1], X_train.shape[2]),return_sequences=True))
model.add(Dropout(0.5))

# n is random
for i in range(n)
    model.add(GRU(64,kernel_initializer = 'uniform', return_sequences=True))
    model.add(Dropout(0.5))

model.add(Flatten())
model.add(Dense(1))
model.add(Activation('softmax'))

#Compile and fit
model.compile(loss='mean_squared_error', optimizer='SGD')
early_stopping = EarlyStopping(monitor='val_loss', patience=50)
checkpointer = ModelCheckpoint(filepath=Checkpoint_mode, verbose=0, save_weights_only=False, save_best_only=True)
model.fit(X_train, y_train,
          batch_size=256,
          epochs=64,
          validation_split=0.25,
          callbacks=[early_stopping, checkpointer],
          verbose=0,
          shuffle=False)

И результат с меньшей ошибкой выглядит как изображение (есть разные эксперименты с одинаковым результатом)

Plot Option 1

Вариант 2:

X_train, X_test, y_train, y_test = train_test_split(X, Y, test_size = 0.33, random_state = 42)

# All parameter can be changes kernel, activation, optimizer, ...
model = Sequential()
model.add(GRU(64, input_shape=(X_train.shape[1], X_train.shape[2]),return_sequences=True))
model.add(Dropout(0.5))

# n is random
for i in range(n)
    model.add(GRU(64,kernel_initializer = 'uniform', return_sequences=True))
    model.add(Dropout(0.5))

model.add(Flatten())
model.add(Dense(1))
model.add(Activation('softmax'))

#Compile and fit
model.compile(loss='mean_squared_error', optimizer='SGD')
early_stopping = EarlyStopping(monitor='val_loss', patience=50)
checkpointer = ModelCheckpoint(filepath=Checkpoint_mode, verbose=0, save_weights_only=False, save_best_only=True)
model.fit(X_train, y_train,
          batch_size=256,
          epochs=64,
          validation_split=0.25,
          callbacks=[early_stopping, checkpointer],
          verbose=0,
          shuffle=False)

И результат с меньшей ошибкой выведите как

Option 2 result

Можно ли использовать "train_test_split" из sklearn со случайным выбором для данных?

Почему результат лучше с последовательными данными, чем со случайными данными выбора, если GRU лучше с последовательными данными?

...