[深度学习] 超参数设定和网络训练

2023-11-06

超参数设定

介绍一些重要的网络设计过程中的超参数设定技巧和训练技巧,如学习率,批规范化操作和网络优化化策略的选择。

网络超参数的设定

网络超参数设定在搭建整个网络架构之前,需首先指定与网络结构相关的各项超参数:输入图像像素,卷积层个数,卷积核相关参数。

输入数据像素大小

使用卷积神经网络处理图像问题时,对不同输入图像为得到同规格输出,同时便于GPU运行,会将图像压缩到 2 2 2^2 22大小。一些经典的案例例如:CIFAR-10 数据 32 × 32 像素,STL数据集的96 × 96像素。另外如果不考虑硬件设备限制(通常是GPU显存大小),更高分辨率的图像一般有利于网络性能提升更为显著。此外需要指出,由于一般卷积神经网络采用全连接层作为最后分类层,若直接改变原始网络模型的输入图像分辨率,会导致原始模型卷积层的最终输出无法输入全连接层的状况,此时要重新改变全连接层输入滤波器大小或重新指定其他相关参数。

卷积层参数的设定

卷积层的超参数主要包括卷积核大小卷积操作的步长卷积核个数。关于卷积核大小,小卷积相比大卷积的优势:

  1. 增加网络的容量和模型复杂程度
  2. 减少卷积参数个数
    因此实践中推荐使用 3 × 3 及 5 × 5 这样的小卷积核,其对应的卷积操作步长设置为1
    此外,卷积操作前还可以搭配填充操作(padding),该操作有两层功效
  3. 可充分利用和处理输入图像,或输入数据的边缘信息
  4. 搭配合适的卷积层参数可保持输出与输入同等大小,而避免随着网络的深度增加,输入大小的急剧减少。
    通常来说,对卷积核大小 f * f, 步长为 1 的卷积操作,当 p =( f - 1 )/ 2 时,便可维持输出与原输入等大。

池化层参数

同卷积核大小类似,池化层的核大小一般也设定为比较小的值,如 2 * 2 , 3 * 3 等。常用的参数设定为2 * 2 , 池化步长为 2 。在此设定下,输出结果大小仅为输入数据长宽大小的 3 / 4。也就是说有 75% 的相应值被丢弃。这就起到了下采样的作用。为了不丢弃过多的输入相应而损失网络性能,池化操作极少使用超过 3 * 3 大小的池化操作。

训练技巧

训练数据随机打乱

在训练卷积神经网络时,尽管训练数据固定,但由于采用了随机批处理的训练机制,因此我们可在模型每轮训练进行前将训练数据随机打乱,以确保模型不同轮次相同批次看到的数据是不同的。这样的处理不仅会提高模型的收敛速度,而且,相对固定次序的训练模型,此操作会略微提升模型在测试集上的预测结果。
###学习率的设定
训练模型时另一关键设定便是模型学习率,一个理想的学习率会促进模型收敛,而不理想的学习率甚至会导致模型直接损失函数损失值爆炸无法完成训练,学习率的设定可遵循以下原则:

  1. 模型训练开始时初始学习率不宜过大,以0.01, 0.001为宜如果发现开始训练没几个轮次模型目标损失值就急剧上升,这说明模型训练学习率过大,此时应该减小学习率从头训练。
  2. 学习率应该随着轮次增加而减缓,减缓机制可有不同,一般为如下三种方式:
    1)轮数减缓。如前五轮学习率减半,下一个五轮再减半。
    2)指数减缓,即学习率按训练轮次增长指数插值递减,在matlab中可指定20轮每轮学习率为 lr = logspace(1e-2, 1e-5, 20) 3) 分数减缓 如果原始的学习率为 l 0 l_0 l0, 学习率按照下式递减, l r l_r lr = l 0 l_0 l0 / (1 + k t k_t kt) , k 为超参数用来控制学习率减缓幅度,t 为训练轮数。
    可使用模型训练曲线来判断当前学习率是否合适。
  3. 如果模型损失值在模型训练开始的几个批次直接爆炸,则学习率太大, 此时应该大幅减小学习率从头开始训练
  4. 若模型一开始损失值下降明显,但后劲不足(绿色线)此时应使用较小学习率从头开始训练,或在后几轮改小学习率仅重新训练几轮即可。
  5. 若模型损失值一直下降缓慢,(蓝色线)此时应稍微增大学习率,后继续观察训练曲线
    学习率

什么是优化算法

优化算法的功能就是改善训练方式,来最小化(最大化)损失函数
模型内部有些参数,是用来计算测试集中目标值 Y 的真实值和预测值的偏差,基于这些参数,就形成了损失函数E(x)。
比如说,权重( ω ω ω)和偏差(b)就是这样的内部参数,一般用于计算输出值,在训练神经网络模型时起到主要作用。
在有效地训练模型并产生准确结果时,模型的内部参数起到了非常重要的作用。这也是为什么我们应该用各种优化策略和算法,来更新和计算影响模型训练和模型输出的网络参数,使其逼近或达到最优值。
优化算法分为两大类:

一阶优化算法

这种算法使用各参数的梯度值来最小化或最大化损失函数,最常用的一阶优化算法是梯度下降。
函数梯度:导数 dy / dx 的多变量表达式,用来表示y相对于x的瞬时变化率。往往为了计算多变量函数的导数时,会用梯度取代导数,并使用偏导数来计算梯度。梯度和导数之间的一个主要区别是函数的梯度形成了一个

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

[深度学习] 超参数设定和网络训练 的相关文章

  • 入站与出站规则

    参考 https zhidao baidu com question 397135594 html 部署一个端口号为80的web程序 结果其他机器访问不到 但是能ping通 当关闭防火墙时 即可访问 但当开启防火墙时又失败 原因在于防火墙的
  • 什么是模式识别,模式识别主要识别什么?

    模式识别诞生于20实际20年代 随着40年代计算机的出现 50年代人工智能的兴起 模式识别在60年代初迅速发展成为一门学科 简单点说 模式识别是根据输入的原始数据对齐进行各种分析判断 从而得到其类别属性 特征判断的过程 为了具备这种能力 人

随机推荐

  • upload-labs 09(配合解析漏洞)

    题目 查看源码 该代码对文件名最后是进行拼接的 可以伪造文件名 通过bp截断上传文件 在文件后添加 进行伪造 如图示 验证文件 文件上传成功 小提示 在前面的某些关卡也存在同样的漏洞 可用此方法通过
  • 基于插值的超分辨率图像重建算法(1)

    基于插值的方法通常提供过于平滑的重建图像 失去部分细节 留下了振铃效应 输出图像灰度剧烈变化处产生的震荡 尤其是高频信息丢失 基于插值的重建方法通常有三类 1 最近邻插值法 2 双线性插值法 3 双三次插值法 1 最邻近插值法 Neares
  • golang - recover 使用笔记

    作用 程序报panic时 会使整个程序挂掉 在实际工作中 报panic的地方可能会非常的多 一旦报panic会导致整个服务挂掉 是非常危险的 golang 引用recover 函数来捕获异常 使得即使报panic 也能继续运行下去 通常写法
  • 2023年春秋杯网络安全联赛春季赛Misc-AK

    sudo CVE 2023 22809 没有vim vi 就用原生编辑器nano EDITOR nano flag sudoedit etc GAMELAB piphack 可以下载任意包 考虑构造恶意的包 让他去下载 直接在setup下写
  • 7-6 逆序输出 (10 分)

    输入n个数 然后把这n个数逆序输出 输入格式 测试数据有多组 处理到文件尾 每组测试数据在一行上首先输入整数n 接着输入n n lt 40 个整数 输出格式 对于每组测试 逆序输出n个数 每两个数据之间留一个空格 每两组测试数据之间留一个空
  • MybatisPlus QueryWrapper的null查询

    查询字段对应 null的值 特殊 isNull QueryWrapper
  • UnicodeDecodeError:gbk codec can’t decode byte 0xff in position 0: illegal multibyte sequence

    在批量处理XML txt 文件时遇到了问题 UnicodeDecodeError gbk codec can t decode byte 0xff in position 0 illegal multibyte sequence 网上有个帖
  • Mysql URL连接参数useSSL、serverTimezone 相关问题

    MySQL 8 0 以下版本 JDBC 驱动名及数据库 URL static final String JDBC DRIVER com mysql jdbc Driver static final String DB URL jdbc my
  • 无向图的DFS算法

    2 无向图的DFS算法 按照教材中的定义方式 完整实现图的DFS算法 给定图数据文件 tinyG txt 能够输出DFS的节点遍历结果 及每个节点的Pre和Post值 和连通分量的个数与节点构成 类名 GraphDFS 博文标题 第四周作业
  • C++ std::pair and std::list \ std::array

    std pair lt 第一个数据类型 第二个数据类型 gt 变量名 例如 std pair
  • leetcode总结:最长公共前缀

    1 Python max 方法返回字符串中最大的字母 Python min 方法返回字符串中最小的字母 2 另外 字符串是可以比较的 故有下面 3 enumerate 函数 用于将一个可遍历的数据对象 如列表 元组或字符串 组合为一个索引序
  • Unity——MVC(很不错的解释应用)

    点击打开链接 First time programmers usually start learning the trade with the classic Hello World program From there bigger an
  • 这就是神经网络 9:深度学习-语义分割-FCN、U-Net、SegNet

    FCN 简介 FCN全称是 Fully Convolutional Networks 也就是全卷积网络 这个网络去掉了全连接层 网络结构里只有卷积 池化和反卷积 操作 本文的FCN特指这个语义分割网络 而非广义的全卷积网络 作者在论文里说
  • 计算机管理启动postgresql失败

    1 选中postgresql右键 属性 2 在属性中的找到 登录 页 本地系统账户
  • C++文件读写操作(自学笔记三)

    C 中对文件的操作的三个大类 写操作 ofstream 读操作 ifstream 读写操作 fstream 要想实现对文件的读写操作 头文件中需要包含 include
  • spring初始化方法的执行顺序以及其原理

    Spring中初始化方法的执行顺序 首先通过一个例子来看其顺序 调用顺序 init2 PostConstruct注解 gt afterPropertiesSet InitializingBean接口 gt init3 init method
  • 数学建模——相关系数(1)——皮尔逊相关系数(Person)

    文章目录 一 相关系数专栏简介 二 相关的基本数学概念 总体和样本 三 皮尔逊相关系数 Person 1 协方差 用于引出相关系数的定义 2 总体皮尔逊Person相关系数 3 样本皮尔逊Person相关系数 4 皮尔逊相关系数的使用范围
  • 海思平台GPIO驱动最简单实现

    闲来无事 发两个小程序玩玩 利用HI MPI SYS SetReg HI MPI SYS GetReg实现GPIO驱动程序 源码 include
  • Java中的拷贝

    Java中的拷贝 在Java中 深拷贝和浅拷贝主要用于对象的拷贝 即将一个对象复制给另一个对象 而引用拷贝一般用于对象的赋值和参数传递 三者的对比图 浅拷贝 浅拷贝指只拷贝对象的引用 不拷贝对象本身 也就是说 如果对象中有引用类型的成员变量
  • [深度学习] 超参数设定和网络训练

    超参数设定 介绍一些重要的网络设计过程中的超参数设定技巧和训练技巧 如学习率 批规范化操作和网络优化化策略的选择 网络超参数的设定 网络超参数设定在搭建整个网络架构之前 需首先指定与网络结构相关的各项超参数 输入图像像素 卷积层个数 卷积核