首页 飞桨领航团 帖子详情
飞桨领航团AI达人创造营Day03 | 深度学习模型训练和关键参数调优详解
收藏
快速回复
飞桨领航团 文章AI达人创造营 1448 0
飞桨领航团AI达人创造营Day03 | 深度学习模型训练和关键参数调优详解
收藏
快速回复
飞桨领航团 文章AI达人创造营 1448 0

1.回归任务

example:人脸关键点检测

编号:1-17:人脸的下轮廓;18-27:眉毛;28-36: 鼻子;37-48:眼睛;49-68:嘴巴。

input:image BxCxHxW

output:人脸关键点的数量x2(每个人脸关键点的横坐标与纵坐标)

Inception Block

Inception结构,首先通过1x1卷积来降低通道数把信息聚集一下,再进行不同尺度的特征提取以及池化,得到多个尺度的信息,最后将特征进行叠加输出(官方说法:可以将稀疏矩阵聚类为较为密集的子矩阵来提高计算性能)。

shufflenet中指出Inception类似的结构将增加MAC(memory access cost),降低推理速度。

空间注意力模块

空间注意力聚焦在“哪里”是最具信息量的部分。计算空间注意力的方法是沿着通道轴应用平均池化和最大池操作,然后将它们连接起来生成一个有效的特征描述符。

2.分类任务

example:图像分类

常见数据集:cifar-10/100、MNIST、MNIST Fashion、ImageNet....

例子是目前最新的mixerMLP系列的gMLP网络,最核心的部分就是空间选通单元(Spatial Gating Unit,SGU):https://arxiv.org/abs/2105.08050

3.场景任务

这里说的场景任务是针对某一个特定的场景开发的深度学习任务,相比于回归和分类任务来说,场景任务的难度更高。这里说的场景任务包括但不限于目标检测、图像分割、文本生成、语音合成、强化学习等。

example:目标检测

常见数据集:VOC2012、COCO2017....

常用网络:YOLO(1阶段)、RCNN(2阶段)、FCOS(anchor-free)....

example:图像分割

常见数据集:VOC2012、Cityscapes、ADE20K....

常用网络:HRNet-OCR 、DeepLabv3+ 、Unet....

example:光学字符识别(OCR)

OCR库:paddleOCR

example:实例分割

常见数据集:COCO2017....

常用网络:Mask-RCNN

 

3、模型训练

1.基于高层API训练模型(paddle2.0)

import paddle

# 使用paddle.Model完成模型的封装
model = paddle.Model(Net)

# 为模型训练做准备,设置优化器,损失函数和精度计算方式
model.prepare(optimizer=paddle.optimizer.Adam(parameters=model.parameters()),
              loss=paddle.nn.CrossEntropyLoss(),
              metrics=paddle.metric.Accuracy())

# 调用fit()接口来启动训练过程
model.fit(train_dataset,
          epochs=1,
          batch_size=64,
          verbose=1)

2.使用PaddleX训练模型

model.train(
    num_epochs=270,
    train_dataset=train_dataset,
    train_batch_size=8,
    eval_dataset=eval_dataset,
    learning_rate=0.000125,
    lr_decay_epochs=[210, 240],
    save_dir='output/yolov3_darknet53',
    use_vdl=True)

经验总结:

1、每个输入数据的维度要保持一致,且一定要和模型输入保持一致。
2、配置学习率衰减策略时,训练的上限轮数一定要计算正确。
3、BatchSize不宜过大,太大容易内存溢出,且一般为2次幂。

 

4.超参优化

模型的超参数指的是模型外部的配置变量,是不能通过训练的进行来估计其取值不同的,且不同的训练任务往往需要不同的超参数。超参数不同,最终得到的模型也是不同的。一般来说,超参数有:学习率,迭代次数,网络的层数,每层神经元的个数等等。

常见的超参数有以下三类:

1、网络结构,包括神经元之间的连接关系、层数、每层的神经元数量、激活函数的类型等 .

2、优化参数,包括优化方法、学习率、小批量的样本数量等 .
3、正则化系数
实践中,当你使⽤神经⽹络解决问题时,寻找好的超参数其实是一件非常困难的事情,对于刚刚接触的同学来说,都是"佛系调优",这也是一开始就"入土"的原因,没有依据的盲目瞎调肯定是不行的。可是如果识别的领域不同,比如同样是LeNet网络,在解决手写数字识别时使用的超参数能得到很好的效果,但是在做眼疾识别时,因为数据集的不同,虽然使用同样的超参数,但是效果可能并不理想,目前不存在⼀种通用的关于正确策略的共同认知。

常用方法:

1、早停

2、学习率衰减

3、网络结构调整

4、小批量数据(mini-batch)大小不必最优...

 

4.效果展示

可视化输入与输出

1、plt、opencv直接输出

2、visualDL展示

模型可解释性

InterpretDL源码:https://github.com/PaddlePaddle/InterpretDL

5.总结与升华

1、最重要的地方在于神经网络工作的基本原理,只有搞懂了原理,才能更好地进行超参优化,得到的模型效果才会更好。
对于模型组网,最重要的是学会使用SubClass形式组网,使用套件虽然简单,但是可定制化程度较低,如果是科研需要,建议一定要学会用SubClass形式组网。
2、模型训练是最简单的部分,只需要按照文档在操作即可,但是超参数的选择有很多讲究,超参的好坏往往会影响模型的最终结果
3、效果展示是一个项目的加分项,如果是科研需要,那么你也需要可视化地展示你的工作成果,这也是十分重要的。

1
收藏
回复
在@后输入用户全名并按空格结束,可艾特全站任一用户