【问题标题】:Deep Learning with Pytorch - should validation be inside or outside the epoch loop?使用 Pytorch 进行深度学习 - 验证应该在纪元循环内部还是外部?
【发布时间】:2022-01-01 00:11:56
【问题描述】:

我已经看到大多数教程/指南在 epoch 循环之外都有验证步骤。我遵循的指南在 epoch 循环中包含验证步骤。哪个是对的?

我注意到,如果您在 epoch 循环中进行了验证,您可以绘制每个 epoch 损失的验证,但是您不能有一个适当的混淆矩阵(由于再次验证相同的图像数据集),反之亦然。或者我还没有找到合适的方法。有什么建议吗?

谢谢

【问题讨论】:

    标签: validation deep-learning pytorch


    【解决方案1】:

    在 PyTorch 中编写训练、val 循环的一般方式是:

    for epoch in range(num_epochs):
        for phase, batch in [('train', train_dataloader), ('val', val_dataloader)]:
            if phase == 'train':
                model.train()
                train(model, batch)
            else:
                model.eval()
                val(model, batch)
    
            # calculate the remaining statistics appropriately
    

    这里需要注意的是,train_dataloader 和 val_dataloader 是从 train_dataset 创建的,具体取决于您的交叉验证策略(随机拆分、分层拆分等)

    【讨论】:

    • 感谢您的回答。我很困惑,因为我的混淆矩阵是错误的(20 个验证图像 x 30 个 epochs = CM 内的 600 个总图像)。我不确定如何继续创建混淆矩阵,但我认为我只需要对最后一个时期进行最后一次验证,然后再创建它。到目前为止,我为每个时期的每个验证添加了 y_true、y_pred。你能证实吗?谢谢
    猜你喜欢
    • 2021-01-05
    • 2010-09-13
    • 1970-01-01
    • 2014-03-18
    • 2014-03-24
    • 2018-06-30
    • 1970-01-01
    • 2021-04-09
    • 2018-03-17
    相关资源
    最近更新 更多