Datawhale 零基础⼊⻔CV-Task4 模型训练与验证

一个成熟合格的深度学习训练流程至少具备以下功能:
1.再训练集上进行训练,并在验证集上进行验证;——本次比赛的数据集包含了训练集、验证集和测试集
2.模型可以保存最优的权重,并读取权重;——pytorch已经帮助我们集成了这些内容
3.记录下训练集和验证集的精度,便于调参;——在过拟合和欠拟合中找到平衡点

1.构造验证集

在机器学习模型的训练过程中,模型是非常容易过拟合的。
过拟合的现象
导致模型过拟合的情况有很多种,其中最为常见的情况是模型复杂度程度太高,导致模型学习到了训练数据的方方面面,学习到了一些细枝末节的规律。
解决过拟合的一个好方法是构造验证数据集。
因为训练集和验证集是分开的,所以模型在验证集上面的精度在一定成都上可以反映模型的泛化能力。在划分验证集的时候,需要注意验证集的分布应该与测试集尽可能保持一致(比如说都满足正态分布),否则模型在验证集上的精度就失去了指导意义。
验证集的划分有如下的几种方式:
三种典型的验证集划分方法
①留出法(Hold-out)
直接将训练集划分成两部分,新的训练集和验证集。这种划分方式的优点是最为直接简单;缺点是只得到了一份验证集,有可能导致模型在验证集上过拟合。留出法应用场景是数据量比较大的情况。
②交叉验证法(Cross Validation, CV)
将训练集划分为K份,将其中的K-1份作为训练集,剩余 1份作为验证集,循环K训练。这种划分方式是所有的训练集都是验证集,最终模型验证的精度是K份平均得到。这种方式的优点是验证集精度比较可靠,训练K次可以得到K个有多样性差异的模型;CV验证的缺点是需要训练K次,不适合数据量很大的情况。
③自助采样法(BootStrap)
通过有放回的采样方式得到新的训练集和验证集,每次的训练集和验证集都是有区别的。这种划分方式一般适用于数据量较小的情况。

2.模型训练与验证

①构造训练集和验证集;
②每轮进行训练和验证,并根据最优验证集精度保存模型;
③模型保存与加载;

torch.save(model_object.state_dict(), 'model.pt')
model.load_state_dict(torch.load('model.pt'))

3.模型调参流程

①初步构建简单的CNN模型,不用特别复杂,跑通训练、验证和预测的流程;
②简单CNN模型的损失会比较大,尝试增加模型复杂度,并观察验证集精度;
③在增加模型复杂度的同时增加数据扩增方法,直至验证集精度不变。
深度学习训练流程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值