CV之街景字符编码识别四----pytorch之模型训练与验证 ,如何构造训练集和验证集

本文介绍了训练集、验证集、测试集在模型训练中的作用,探讨了留出法、交叉验证法和自助采样法的优缺点,并详细展示了在PyTorch中如何构造训练集和验证集进行模型训练与验证,以及模型的保存与加载过程。
摘要由CSDN通过智能技术生成

一、训练集,验证集,测试集的作用

  • 训练集(Train Set):模型用于训练和调整模型参数;
  • 验证集(Validation Set):用来验证模型精度和调整模型超参数;
  • 测试集(Test Set):验证模型的泛化能力。
    通俗来讲:训练集用于训练给定的模型。
    验证集用于在模型之间进行选择(例如,随机森林还是神经网络更适合你的问题?)你想要一个有40棵树的随机森林还是50棵树的随机森林?)
    测试集告诉你,你做的怎么样。

二、训练集,验证集的构造

    在对于训练好的模型,也许会出现,欠拟合,过拟合,以及完美拟合三种情况,所以对于模型的选择至关重要,因此构造一个好的验证集也成为训练出合格模型的至关重要的一步。
    解决上述问题最好的解决方法:构建一个与测试集尽可能分布一致的样本集(可称为验证集),在训练过程中不断验证模型在验证集上的精度,并以此控制模型的训练。
  1. 留出法(Hold-Out)
    直接将训练集划分成两部分,新的训练集和验证集。这种划分方式的优点是最为直接简单;缺点是只得到了一份验证集,有可能导致模型在验证集上过拟合。留出法应用场景是数据量比较大的情况。
  2. 交叉验证法(Cross Validation,CV)
    将训练集划分成K份,将其中的K-1份作为训练集,剩余的1份作为验证集,循环K训练。这种划分方式是所有的训练集都是验证集,最终模型验证精度是K份平均得到。这种方式的优点是验证集精度比较可靠,训练K次可以得到K个有多样性差异的模型;CV验证的缺点是需要训练K次,不适合数据量很大的情况。
  3. 自助采样法(BootStrap)
    通过有放回的采样方式得到新的训练集和验证集,每次的训练集和验证集都是有区别的。这种划分方式一般适用于数据量较小的情况。

三、模型的训练和验证

在我们前文中,已经定义了dataloader,网络,损失函数和优化器,下面是进行模型训练与验证。

  • 构造训练集和验证集;
  • 每轮进行训练和验证,并根据最优验证集精度保存模型。

每个epoch的训练代码:

 def train(train_loader, model, criterion, optimizer, epoch):
    # 切换模型为训练模式
    model.train()

    for i, (input, target) in enumerate(train_loader):<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值