美文网首页
深度学习,训练注意事项

深度学习,训练注意事项

作者: 小姐姐催我改备注 | 来源:发表于2019-07-27 21:38 被阅读0次

    title

    在训练中,我们不仅要做验证集也要做测试集,同时还要监控验证集和测试集情况,以此来控制训练参数,合理进行调参。这里我们可以保存模型,用来断点恢复,不断的调整训练参数,使模型在合适的地方改变学习率,得到最优的模型。下面附一张经典的学习率对于loss的影响


    image.png

    1.欠拟合

    首先,我们来看看什么是欠拟合情况。


    欠拟合.png

    这里我们把横轴作为epoch,纵轴作为loss,我们可以看到,train,val loss相差很大,这就是所谓的欠拟合。这里我们来分析下欠拟合发生的原因。

    欠拟合实际的意思就是我们的模型没有学习到特征,不能和好的表征任务,因此有如下两条解决办法:

    ——1.减少数据的复杂性,提升数据的相关度

    ——2.增大模型的复杂度,以此来提升模型的表征能力,同时减少正则项,注意,这里我们减少正则是对应过拟合情况下增加正则。

    2.合适拟合

    所谓的合适拟合就是数据,参数,模型都是在一个合适情况下,模型效果比较好。


    image.png

    这里注意,有时候有微小的波动很正常,我们要看大范围的loss变化情况。

            return_loss = test_handle.val_test_save(model,criterion,val_loader)
            val_x.append(epoch)
            val_y.append(return_loss)
            if minloss > return_loss:
                acc = test_handle.evalution(model,128)
                print('[%s][%d]Accuracy-Flip: %1.5f' % ("lfwtest", epoch, acc))
                torch.save(model.state_dict(), output_dir + "/model_%d" % epoch + ".pt")
    
            plt.figure()
            train_x.append(epoch)
            train_y.append(loss)
            plt.title("train_val_loss_pic")
            plt.xlabel("epoch")
            plt.ylabel("loss_value")
            plt.plot(val_x, val_y, "-s", label='val')
            plt.plot(train_x, train_y, "+-", label='train')
            plt.legend(bbox_to_anchor=(1.0, 1), loc=1, borderaxespad=0.)
            plt.savefig("./train_val_loss_pic.pdf")
    

    这里附上一段代码,用来监控train,val loss,情况。
    这里注意,如果我们同时拥有test,val,我们应该选择哪一个最小呢?在此我认为是val,因为对于不同的test有不同的效果,但是验证集是一个相对与训练集来说是一个比较相近的情况,更贴切的表征训练情况。

    3.过拟合

    这种情况实在我们训练中经常用到的,因此在这里重点进行分析。


    image.png

    过拟合就是,训练loss还在下降,但是val loss 却在上升。

    3. 下面是对过拟合的处理办法

    转载:https://blog.csdn.net/Mason_Mao/article/details/90474735

    3.1正则化

    使用l1,l2正则化来对特征进行处理。

    3.2 数据集扩充

    3.3Dropout

    3.4 提前停止迭代,但是要注意选择最好的模型

    3.5 对数据进行预处理,平衡不同类的数据

    相关文章

      网友评论

          本文标题:深度学习,训练注意事项

          本文链接:https://www.haomeiwen.com/subject/ptkyrctx.html