超参数设定及训练技巧

简介: 超参数设定及训练技巧

 一、网络超参数的设定

1.输入数据像素大小的设定:

为便于GPU并行计算,一般将图像大小设置为到2的次幂。

2.卷积层参数的设定:

(1)卷积核大小一般使用1*1,3*3 或 5*5。

(2)使用zero padding,可以充分利用边缘信息、使输入大小保持不变。

(3)卷积核的个数通常设置为2的次幂,如64,128,256,512,1024等。

3.池化层参数的设定:

一般采用卷积核大小2*2,步长为2.

4.全连接层参数的设定(可使用Global Average Pooling来代替):

主要是用来解决全连接的问题,是将最后一层的特征图进行整张图的一个均值池化,形成一个特征点,将这些特征点组成最后的特征向量,然后进行softmax中进行计算。

备注:

(1)Global Average Pooling和Average Pooling(Local)的差别就在“Global”这个字眼上。Global和Local在字面上都是用来形容pooling窗口区域的。Local是取Feature Map的一个子区域求平均值,然后滑动。

(2)Global显然就是对整个Feature Map求均值了(kernel的大小设置成和Feature Map的相同)。所以,有多少个Feature Map就可以输出多少个节点。一般可将输出的结果直接喂给softmax层。

举例:

image.gif编辑

Global Average Pooling:是将最后一层的特征图进行整张图的一个均值池化,形成一个特征点,将这些特征点组成最后的特征向量,在softmax中进行计算。

例:假如,最后一层的数据是10个6*6的特征图,global average pooling是将每一张特征图计算所有像素点的均值,输出一个数据值,这样10个特征图就会输出10个数据点,将这些数据点组成一个1*10的向量的话,就成为一个特征向量,就可以送入到softmax的分类中计算了。

5.卷积的选取:

(1)卷积核尺寸方面:

①大卷积核用多个小卷积核代替;

②单一尺寸卷积核用多尺寸卷积核代替;

③固定形状卷积核趋于使用可变形卷积核;

④使用1x1卷积核(瓶颈结构)

(2)卷积层连接方面:

①使用跳跃连接,让模型更深;

②密集连接都是不错的优化方法;

③使每一层都融合上其它层的特征输出(例如:DenseNet)

6.遇到模型过拟合问题怎么解决?

举个例子:

在上学的时候,有人采取题海战术,把每个题目都背下来。但是题目稍微一变,他就不会做了。因为他非常复杂的记住了每道题的做法,而没有抽象出通用的规则。

所以过拟合有两种原因:

(1)训练集和测试集特征分布不一致;

(2)或者模型太过复杂(记住了每一道题)而样本不足;

欠拟合:欠拟合是由于学习不足;解决办法:可以考虑添加特征,从数据中挖掘出更多的特征,有时候还需要对特征进行变换,使用组合特征和高次特征。

两种解决过拟合的方法:

(1)L0、L1、L2:在向前传播、反向传播后面加个小尾巴;

(2)DropOut:训练时随机“删除”一部分神经元;

介绍的优化方法叫mini-batch,它主要解决的问题是:实际应用时的训练数据往往都太大了,一次加载到电脑里可能内存不够,其次运行速度也很慢。那自然就想到说,不如把训练数据分割成好几份,一次学习一份不就行了吗?前辈们试了试发现不仅解决了内存不足的问题,而且网络“收敛”的速度更快了。由于mini-batch这么棒,自然是神经网络中非常重要的一个技术,但是实际实现时你会发现“真的太简单了”。

mini-batch的操作:

洗牌:是mini-batch的一个操作,因为我们是将训练数据分割成若干份的,分割前将图片的顺序打乱就是所谓的“洗牌”了,这样每一次mini-batch学习的图片都不一样为网络中增加了一些随机的因素。优化了网络。

另外注意:

batch size太小会使训练速度很慢;

太大会加快训练速度,但同时会导致内存占用过高,并有可能降低准确率。

所以32至256是不错的初始值选择,尤其是64和128

问题,为什么选择2的指数倍?

因为计算机内存一般为2的指数倍,采用2进制编码。


相关文章
|
6月前
|
自然语言处理
在ModelScope中,你可以通过设置模型的参数来控制输出的阈值
在ModelScope中,你可以通过设置模型的参数来控制输出的阈值
161 1
|
1月前
|
机器学习/深度学习 存储 算法
五、分类模型及超参数调优
五、分类模型及超参数调优
18 0
|
4月前
修改预测函数
【7月更文挑战第22天】修改预测函数。
46 6
|
4月前
|
算法
创建一个训练函数
【7月更文挑战第22天】创建一个训练函数。
34 4
|
4月前
|
机器学习/深度学习 计算机视觉 Python
`GridSearchCV` 是一种穷举搜索方法,它会对指定的参数网格中的每一个参数组合进行交叉验证,并返回最优的参数组合。
`GridSearchCV` 是一种穷举搜索方法,它会对指定的参数网格中的每一个参数组合进行交叉验证,并返回最优的参数组合。
YOLOv8打印模型结构配置信息并查看网络模型详细参数:参数量、计算量(GFLOPS)
YOLOv8打印模型结构配置信息并查看网络模型详细参数:参数量、计算量(GFLOPS)
|
6月前
|
机器学习/深度学习 TensorFlow 定位技术
神经网络学习率指数衰减ExponentialDecay策略的参数含义与使用方法详解
神经网络学习率指数衰减ExponentialDecay策略的参数含义与使用方法详解
123 1
|
机器学习/深度学习 PyTorch 算法框架/工具
base model初始化large model,造成的参数矩阵对不上权重不匹配问题+修改预训练权重形状和上采样
base model初始化large model,造成的参数矩阵对不上权重不匹配问题+修改预训练权重形状和上采样
216 0
|
机器学习/深度学习 算法
六、超参数调整, 批量正则化 和多元分类器
六、超参数调整, 批量正则化 和多元分类器
六、超参数调整, 批量正则化 和多元分类器
|
机器学习/深度学习 PyTorch 算法框架/工具
pytorch 神经网络设置初始固定参数
在 PyTorch 中,可以通过给神经网络的权重(weight)和偏置(bias)设置一个固定的初始值来实现固定参数的功能。一种方法是在创建网络时手动设置权重和偏置。
686 0