首页 > 解决方案 > DREAM - 神经网络不收敛 - 上下损失

问题描述

我正在使用这个 DREAM 进行下一个篮子预测: https ://github.com/LaceyChen17/DREAM

它非常简单直接,运行一些调整(常量的小错误)但我的损失在我尝试训练它之后很疯狂。

我正在尝试使用建议的数据集(来自 instacart)来模拟其输出: https ://www.instacart.com/datasets/grocery-shopping-2017

但数据似乎并没有收敛。我试图将 LR 从 0.1 更改为 0.001,调整 CLIP 或 dropout,但没有任何积极的结果。我的损失不断下降,然后像疯了一样再次上升。

我试图研究这个网络,在我第一次运行它之后,我想从那里开始工作,但现在我似乎无法调试它的问题。

这是我的配置示例:

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',
                }

有什么见解吗?

标签: pythontensorflowkerasrecurrent-neural-networkmarket-basket-analysis

解决方案


可能还有其他的方法可以尝试提高训练的性能,但是,我至少建议使用“ModelCheckpoint”类来保存最佳验证权重。

如果您使用的是 Keras,那么您可以参考此链接以获取更多信息。

Keras 回调

您需要将一些训练数据分配给验证集。此回调计算验证集的损失并在每次改进时保存权重。训练后,您可以加载最佳权重以防止模型过度拟合。这至少可以防止您的模型在训练过程中变得更糟,并且您可以从那里通过进行额外的调整来排除故障。


推荐阅读