使用Fastai中的学习率查找器和渐进式调整大小提高训练效率

简介: 使用Fastai中的学习率查找器和渐进式调整大小提高训练效率

当我第一次开始使用fastai时,我非常兴奋地建立并训练了一个深度学习模型,它可以在很短的时间内产生惊人的结果。

我将在本文的最后链接我以前的文章,在这些文章中我用fastai记录了我的学习过程。:)

获得数据

我们需要这些数据来开始。它来自于Kaggle的石头剪刀布数据集。这个任务变成了一个多类图像分类问题,有三个类(每个类都有训练,验证,测试文件夹)包含大小为300x300的RGB颜色图像。

导入fasti vision的所有函数并设置path变量。

fromfastai.vision.allimport*path=Path('/storage/RockPaperScissors/RockPaperScissors/data/')
path.ls()
Output:
(#4) [Path('/storage/RockPaperScissors/RockPaperScissors/data/test2'),Path('/storage/RockPaperScissors/RockPaperScissors/data/valid'),Path('/storage/RockPaperScissors/RockPaperScissors/data/.DS_Store'),Path('/storage/RockPaperScissors/RockPaperScissors/data/train')]
#makesuretosetthatpathtowhereveryou've kept your data either locally or online.

现在我们将定义一个数据块来从文件夹中获取数据。我们指定这些是为了确保在编写最少的代码并使我们的数据对模型可用:

如何使用get_image_files函数获取图像文件:获取训练和验证文件夹中的所有图像文件

使用parent_label获取类,以确保我们将直接父文件夹名称作为我们的类名称

最后,使用GrandparentSplitter分割训练和验证,这将为我们提供单独的数据集,用于训练和验证。

defget_dls(bs, size):
dblock=DataBlock(blocks= (ImageBlock, CategoryBlock),
get_items=get_image_files,
get_y=parent_label,
splitter=GrandparentSplitter(),
item_tfms=Resize(size)
                    )
returndblock.dataloaders(path, bs=bs)

这将返回一个数据加载器,它将使我们的批处理大小为bs,图像大小为size。

什么是渐进式调整大小,我们如何应用它?

就像Jeremy在他的书中所说的那样:使用小图像开始训练,然后使用大图像结束训练。将大多数时期的训练花费在较小的图像上,有助于更快地完成训练。使用大图像完成训练会使最终精度更高。

这是一种实验技术,与获得相同大小的图像时相比,这种技术已被证明在获得更高的精度方面非常有用。

现在让我们看看如何训练多种尺寸,对吗?

我们将批处理大小设为64,图像大小设为较小的128x128。

dls=get_dls(64, 128)

现在,让我们继续计算在此部分训练中应使用的学习率。

寻找合适的学习率

首先,我们通过下面的代码利用迁移学习来建立模型。

learn=cnn_learner(dls, resnet34, metrics=accuracy)

然后,我们绘制一个图表以查看有关找到学习率的信息。

learn.lr_find()

输出看起来像这样,如果我们采用特定的学习率值,则可以清楚地看到我们的损失。

640.png

看起来学习率大约为1e-3足以确保我们的损失随着训练而减少。我们从这里开始

learn=cnn_learner(dls, resnet34, metrics=accuracy)
learn.fit_one_cycle(10, 1e-3)

在前几个批次中,我们看到了相当可观的结果。

640.png

注意:我在GPU上训练了模型,这就是为什么每个时期只需要几秒钟的原因。如果您仅在CPU上进行训练,则每个过程将花费更长的时间,有时甚至需要10分钟左右。

现在我们已经在较小的图像尺寸上训练了模型,我们可以继续进行训练的第二部分。

在下一个模型微调中,我们使用批处理大小为128,图像大小为224。

learn.dls=get_dls(128, 224)
learn.fine_tune(5, 1e-3)

640.png

如您所知,在我们的训练中,我们的准确性达到了将近95%,在GPU上只需花费三分钟的时间进行训练!

总结

Fastai使我们能够快速开发任何深度学习任务,并且正如我在前几周进行的尝试一样,我发现自己越来越喜欢这种超级简单的方法。如果您热衷于跟着我走这条路,请确保跟随我继续更新,因为我将使用这个令人惊叹的库探索更多的深度学习任务。

目录
相关文章
|
调度 算法框架/工具
Keras 学习率调整
Keras 学习率调整
492 0
|
3月前
|
机器学习/深度学习 并行计算 PyTorch
优化技巧与策略:提高 PyTorch 模型训练效率
【8月更文第29天】在深度学习领域中,PyTorch 是一个非常流行的框架,被广泛应用于各种机器学习任务中。然而,随着模型复杂度的增加以及数据集规模的增长,如何有效地训练这些模型成为了一个重要的问题。本文将介绍一系列优化技巧和策略,帮助提高 PyTorch 模型训练的效率。
291 0
|
4月前
|
机器学习/深度学习 算法 算法框架/工具
模型训练实战:选择合适的优化算法
【7月更文第17天】在模型训练这场智慧与计算力的较量中,优化算法就像是一位精明的向导,引领着我们穿越复杂的损失函数地形,寻找那最低点的“宝藏”——最优解。今天,我们就来一场模型训练的实战之旅,探讨两位明星级的优化算法:梯度下降和Adam,看看它们在不同战场上的英姿。
205 5
|
4月前
|
机器学习/深度学习 开发框架 自然语言处理
深度学习中的自动学习率调整方法探索与应用
传统深度学习模型中,学习率的选择对训练效果至关重要,然而其调整通常依赖于经验或静态策略。本文探讨了现代深度学习中的自动学习率调整方法,通过分析不同算法的原理与应用实例,展示了这些方法在提高模型收敛速度和精度方面的潜力。 【7月更文挑战第14天】
57 3
|
6月前
|
机器学习/深度学习 人工智能 算法
深度探究自适应学习率调整策略在深度学习优化中的影响
【5月更文挑战第25天】 随着深度学习模型的复杂性逐渐增加,传统的固定学习率方法已不足以满足高效训练的需求。自适应学习率调整策略应运而生,通过动态调整学习率以加速收敛过程并提高模型性能。本文深入分析了几种主流的自适应学习率方法,包括Adam、RMSprop和AdaGrad等,并探讨了它们在不同深度学习场景中的应用效果。通过对比实验结果,我们揭示了这些策略在处理不同问题时的优势与局限,为未来深度学习优化算法的选择提供了理论依据。
|
5月前
|
机器学习/深度学习 数据采集 人工智能
【机器学习】CLIP模型在有限计算资源下的性能探究:从数据、架构到训练策略
【机器学习】CLIP模型在有限计算资源下的性能探究:从数据、架构到训练策略
333 0
|
6月前
|
机器学习/深度学习 自然语言处理 算法
深度探索自适应学习率调整策略在深度学习优化中的应用
【5月更文挑战第17天】 在深度学习的复杂网络结构中,学习率扮演着至关重要的角色。一个合适的学习率可以加快收敛速度,避免陷入局部最小值,并提高模型性能。然而,固定的学习率往往难以适应不同阶段的训练需求。因此,自适应学习率调整策略应运而生,其通过动态调整学习率以响应训练过程中的变化,从而提升优化效率。本文将深入分析几种先进的自适应学习率方法,探讨它们的工作原理、优缺点及在实际问题中的应用效果。
|
6月前
|
机器学习/深度学习 存储 自然语言处理
深度探索自适应学习率调整:从传统方法到深度学习优化器
【5月更文挑战第15天】 在深度学习的复杂网络结构与海量数据中,学习率作为模型训练的关键超参数,其调整策略直接影响着模型的收敛速度与最终性能。传统的学习率调整方法,如固定学习率、学习率衰减等,虽然简单易行,但在多样化的任务面前往往显得力不从心。近年来,随着自适应学习率技术的兴起,一系列创新的优化器如Adam、RMSProp和Adagrad等应运而生,它们通过引入自适应机制动态调整学习率,显著改善了模型的训练效率与泛化能力。本文将深入剖析传统学习率调整方法的原理与局限性,并详细介绍当前主流的自适应学习率优化器,最后探讨未来可能的发展方向。
|
6月前
|
机器学习/深度学习 算法 搜索推荐
揭秘深度学习中的自适应学习率调整策略
【4月更文挑战第30天】 在深度学习领域,优化算法的学习率是影响模型性能的关键因素之一。一个合适的学习率能够加快收敛速度,提高模型的泛化能力。然而,固定的学习率往往难以适应不同阶段的训练需求。因此,研究者们提出了多种自适应学习率调整策略以应对这一挑战。本文将深入探讨几种常用的自适应学习率方法,包括AdaGrad、RMSProp、Adam及其变种,分析它们的工作原理与实际应用效果,并讨论它们在特定问题中的选择指南。
|
机器学习/深度学习 算法 PyTorch
机器学习-学习率:从理论到实战,探索学习率的调整策略
机器学习-学习率:从理论到实战,探索学习率的调整策略
274 0
下一篇
无影云桌面