我正在使用这个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',
}
任何见解?
答案 0 :(得分:0)
可能还有其他一些方法可以尝试提高培训的性能,但是,我至少建议使用“ModelCheckpoint”类来保存最佳的验证权重。
如果您使用Keras,则可以参考此链接以获取更多信息。
您需要将一些培训数据分配给验证集。此回调计算验证集的损失,并在每次改进时保存权重。训练后,您可以加载最佳权重,以防止模型过度拟合。这至少可以防止您的模型在培训过程中变得更糟,并且可以通过进行额外的调整来解决问题。