liupei101 / DSCA

[ESWA 2023] Implementation of DSCA: A Dual-stream Network with Cross-attention on Whole-Slide Image Pyramids for Cancer Prognosis
23 stars 6 forks source link

关于监督函数 #6

Closed ljhOfGithub closed 1 year ago

ljhOfGithub commented 1 year ago

您好!感谢您的贡献!您借鉴的https://github.com/mahmoodlab/Patch-GCN/blob/00207f03e541f1b26ef2bf6103502b30d9422700/utils/core_utils.py#L177-L188 没有用上monitor_cindex(),我观察运行过程,没有用监督函数阻止验证集的loss增长或者cindex减少。我训练了两三个epoch,验证集的loss就开始一直上升,请问我该如何调参?非常感谢!

liupei101 commented 1 year ago

您好!

我们的代码使用了验证集Loss,它有两个作用:

  1. 模型的early stopping:如果模型在N个epoch内,验证集上的Loss都没有进一步下降(相对于最低的验证集Loss),就停止整个模型训练。对应代码参见 https://github.com/liupei101/DSCA/blob/main/model/model_handler.py#L198 。Early stopping的细节请参考https://github.com/liupei101/DSCA/blob/main/utils/train_utils.py#L5 。
  2. 调整学习率:如果模型在N个epoch内,验证集上的Loss都没有进一步下降(相对于最低的验证集Loss),就衰减学习率。对应代码参见:https://github.com/liupei101/DSCA/blob/main/model/model_handler.py#L199

关于您提到的验证集Loss一直上升的问题,具体可能的原因有很多。以下几个原因供参考:

  1. 初始学习率设置过高
  2. 模型配置错误,导致模型无法很好地拟合训练数据
  3. 验证集数据设置不合理,可能是数据划分时没有处理好

希望这些对您有帮助。