DREAM - 神经网络不会聚 - 丢失和减少

时间:2018-04-30 19:37:00

标签: python tensorflow keras recurrent-neural-network market-basket-analysis

我正在使用这个DREAM进行下一个篮子预测: 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 :(得分:0)

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

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

Keras Callbacks

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