МЕЧТА - Нейронная сеть не сходится - Потеря вниз и вверх - PullRequest
0 голосов
/ 30 апреля 2018

Я использую эту МЕЧТУ для прогноза следующей корзины: https://github.com/LaceyChen17/DREAM

Это довольно легко и просто, несколько настроек для запуска (незначительные ошибки от констант), но моя потеря сумасшедшая после того, как я пытаюсь обучить ее.

Я пытаюсь смоделировать вывод, используя предложенный набор данных (из instacart): https://www.instacart.com/datasets/grocery-shopping-2017

Но данные, похоже, не сходятся. Я пытался изменить LR с 0,1 до 0,001, настроить CLIP или выпадение, но ничего не происходит положительно. Моя потеря продолжает падать, а затем снова подниматься как сумасшедшая.

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

Вот пример моей конфигурации:

DREAM_CONFIG = {'basket_pool_type': 'max', # 'avg'
                'rnn_layers': 3, # 2, 3
                'rnn_type': 'LSTM',#'RNN_TANH',#'GRU',#'LSTM',# 'RNN_RELU',
                'dropout': 0.5,
                # 'num_product': 49688 + 1, # padding idx = 0
                'num_product': 49688 + 1 + 1, 
                # 49688 products, padding idx = 0, none idx = 49689, none idx indicates no products
                'none_idx': 49689,
                'embedding_dim': 64, # 128 
                'cuda': False, # True,
                'clip': 20, # 0.25
                'epochs': 100,
                'batch_size': 256,
                'learning_rate': 0.0001, # 0.0001
                'log_interval': 1, # num of batchs between two logging
                'checkpoint_dir': DREAM_MODEL_DIR + 'reorder-next-dream-{epoch:02d}-{loss:.4f}.model',
                }

Есть идеи?

1 Ответ

0 голосов
/ 01 мая 2018

Могут быть предприняты дополнительные меры для повышения эффективности обучения, однако я бы по крайней мере рекомендовал использовать класс ModelCheckpoint для сохранения лучших весов проверки.

Если вы используете Keras, вы можете обратиться к этой ссылке для получения дополнительной информации.

Обратные вызовы Keras

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

...