百度飞桨第3课|深度学习模型训练和关键参数调优详解

本文详细介绍了使用百度飞桨进行深度学习模型训练的过程,包括模型选择、模型训练、超参优化和效果展示。重点讲解了手动调整超参数的四大方法,并强调理解模型工作原理的重要性。此外,还提到了利用VisualDL进行训练过程的可视化。
摘要由CSDN通过智能技术生成

目录

一、模型选择:

1.回归任务

2.分类任务

3.场景任务

二、模型训练:

1.基于高层API训练模型

2.使用PaddleX训练模型

3.模型训练通用配置基本原则

三、超参优化:

1.超参优化的基本概念

2.手动调整超参数的四大方法

四、效果展示:

1.可视化输入与输出

2.巧用VisualDL

3.权重可视化

五、总结与升华:


一、模型选择:

1.回归任务

  • 人脸关键点检测

        人脸关键点检测任务中,输出为 人脸关键点的数量x2,即每个人脸关键点的横坐标与纵坐标。在模型组网时,主要使用2个模块,分别是Inception模块和空间注意力模块。增加空间注意力模块是为了提高模型效果。

        Inception模块

import paddle
import paddle.nn as nn

# GoogLeNet加BN层加速模型收敛
class Inception(nn.Layer): # 定义Inception块(Inception v1)
    def __init__(self,c1, c2, c3, c4):
        super(Inception, self).__init__()

        self.relu = nn.ReLU()
        self.p1_1 = nn.Conv2D(c1[0], c1[1], 1)
        self.p2_1 = nn.Conv2D(c1[0], c2[0], 1)
        self.p2_2 = nn.Conv2D(c2[0], c2[1], 3, padding=1)
        self.p3_1 = nn.Conv2D(c1[0], c3[0], 1)
        self.p3_2 = nn.Conv2D(c3[0], c3[1], 5, padding=2)
        self.p4_1 = nn.MaxPool2D(kernel_size=3, stride=1, padding=1)
        self.p4_2 = nn.Conv2D(c1[0], c4, 1)

    def forward(self, x):
        p1 = self.relu(self.p1_1(x))
        p2 = self.relu(self.p2_2(self.p2_1(x)))
        p3 = self.relu(self.p3_2(self.p3_1(x)))
        p4 = self.relu(self.p4_2(self.p4_1(x)))

        return paddle.concat([p1, p2, p3, p4], axis=1)

        空间注意力模块

import paddle
import paddle.nn as nn

# 空间注意力机制
class SAM_Module(nn.Layer):  
    def __init__(self):  
        super(SAM_Module, self).__init__()  
        self.conv_after_concat = nn.Conv2D(in_channels=2, out_channels=1, kernel_size=7, stride=1, padding=3)  
        self.sigmoid_spatial = nn.Sigmoid()  

    def forward(self, x):  
        # Spatial Attention Module  
        module_input = x  
        avg = paddle.mean(x, axis=1, keepdim=True)  
        mx = paddle.argmax(x, axis=1, keepdim=True)
        mx = paddle.cast(mx, 'float32')
        x = paddle.concat([avg, mx], axis=1)
        x = self.conv_after_concat(x)  
        x = self.sigmoid_spatial(x)  
        x = module_input * x  

        return x  

2.分类任务

  • 图像分类

3.场景任务

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

  • 目标检测

        PaddleX里的目标检测模型,这里选择骨干网络为DarkNet53的YOLO-V3模型: 

import paddlex as pdx

yolo_v3 = pdx.det.YOLOv3(
    num_classes=2, 
    backbone='DarkNet53'
)

yolo_v3.get_model_info()
{'version': '1.3.11',
 'Model': 'YOLOv3',
 '_Attributes': {'model_type': 'detector',
  'num_classes': 2,
  'labels': None,
  'fixed_input_shape': None},
 '_init_params': {'num_classes': 2,
  'backbone': 'DarkNet53',
  'anchors': None,
  'anchor_masks': None,
  'ignore_threshold': 0.7,
  'nms_score_threshold': 0.01,
  'nms_topk
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值