(керас) Я хочу уменьшить скорость обучения, когда val_acc перестает улучшаться - PullRequest
0 голосов
/ 19 февраля 2019

Я пытаюсь сделать модель CNN, но с низкой точностью: (

Итак, я хочу уменьшить скорость обучения SGD, когда точность проверки перестает улучшаться.

Как я могу сделать искомпилировать ??

1 Ответ

0 голосов
/ 20 февраля 2019

Если вы зациклились на model.train_on_batch, вы можете изменить скорость обучения вручную:

import keras.backend as K
from keras.optimizers import Adam
import sys

epochs = 50
batch_size = 32
iterations_per_epoch = len(x_train) // batch_size

lr = 0.01
model.compile(optimizer=Adam(lr), loss='some loss')

min_val_loss = sys.float_info.max
for epoch in range(epochs):
    for batch in range(iterations_per_epoch):
        model.train_on_batch(x_train, y_train)
        val_loss = model.evaluate(x_val, y_val)
        if val_loss >= min_val_loss:
            K.set_value(model.optimizer.lr, lr / 2.)
            lr /= 2.
        else:
            min_val_loss = val_loss

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...