DataWhale 零基础入门语义分割-地表建筑物识别-Task5

本文介绍了DataWhale零基础语义分割课程中的地表建筑物识别Task5,主要内容包括模型训练与验证的三个方法:留出法、交叉验证法和自助采样法,以及模型训练、验证集划分、模型参数设置、模型保存和加载的详细步骤。调参部分推荐了深度学习训练技巧的阅读资源。
摘要由CSDN通过智能技术生成

DataWhale 零基础入门语义分割-地表建筑物识别-Task5


模型训练与验证

本章将从构建验证集、模型训练和验证、模型保存与加载和模型调参几个部分讲解,在部分小节中将会结合Pytorch 代码进行讲解。 一个成熟合格所需要具备的功能是: • 在训练集上进行训练,并在验证集上进行验证; • 模型可以保存最优的权重,并读取权重; • 记录下训练集和验证集的精度,便于调参。

一、验证集构造

在这里插入图片描述
在训练自己的模型的时候需要注意的就是欠拟合和过拟合:
欠拟合:自己的模型在训练集上面的拟合效果就是较差的;
过拟合:自己的模型在训练集上面的效果很好,但是在测试集上面的性能就是直线下降,这个时候就是模型训练过拟合,导致模型的泛化能力较差;

从图中可以看出,随着模型复杂的上升,模型在训练上面的误差是在下降的,但是在某个节点过后,模型在测试集上面的误差上升,也就是模型的复杂度过高导致模型记住了训练集中很多细枝末节不是很重要的规律,那么构建一个训练集防止模型出现这种现象是十分有必要的。

验证集的划分方式:

1、留出法(Hold-out)

在这里插入图片描述
对于数据直接划分成训练集和验证集,这样的划分方式十分简单,同时也有效。缺点就是验证集只有一份,模型在训练的过程中也会出现在验证上面过拟合的情况。
适用场景:数据量较大的情况。

2、交叉验证法(Cross validation)

在这里插入图片描述
图中将整个数据集化分成了K份,取其中的一份数据作为验证集,那么剩下的k-1份数据作为训练集。那么k个子集可以轮流充当验证集,最终模型的验证的精度是k份验证集的结果平均得到的。
适用场景:这样得到的验证精度是可靠的,但是训练次数会随着划分的子集的个数增加而增加,从而导致效率下降时间过长,所以不适用于数据量大的场景。

3、自助采样法(Bootstrap)

在这里插入图片描述
通过有放回的采样方式得到新的训练集和验证集,每次的训练集和验证集都是有区别的。
适用场景:这种划分方式一般适用于数据量较小的情况。

二、模型训练和验证

1.验证集的划分

valid_idx, train_idx = [], []
for i in range(len(dataset)):
    if i % 7 == 0:
        valid_idx.append(i)
    else:
#     elif i % 7 == 1:
        train_idx.append(i)
        
train_ds = D.Subset(dataset, train_idx)
valid_ds = D.Subset(dataset, valid_idx)

# define training and validation data loaders
loader = D.DataLoader(
    train_ds, batch_size=BATCH_SIZE, shuffle=True, num_workers=0)

vloader = D.DataLoader(
    valid_ds, batch_size=BATCH_SIZE, shuffle=False, num_workers=0)

使用的方法是留出法,直接将编号是7的倍数的数据划分到验证集中,由于训练集的数量是十分充足的,这样做的是可行的。

2、模型的获取

def get_model():
    model = torchvision.models
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值