深度学习中的一些参数作用

batch与subdivisions

1.batch = 64 :一批训练样本的样本数量(64),每batch个样本(64)更新一次参数.
2.subdivisions = 16 :batch/subdivisions作为一次性送入训练器的样本数量(4).
两个参数如果电脑内存小,则把batch改小一点,batch越大,训练效果越好,subdivisions越大,可以减轻显卡压力.

总结:如何确定batch_size

根据数据集的大小和样本数目确定batch_size:

  1. 样本类别数目较少,而且模型没有BN层,batch_size就设置得较小一点。
  2. 样本类别数目较多,而且模型没有BN层,batch_size就设置得较大一点。尽量保证一个batch里面各个类别都能取到样本。
  3. 数据集很小,可以采取Full Batch Learning。每次用所有的训练集进行训练。

batch_size的大小设置为8的倍数。
有BN层的模型,而且数据集也很大,类别也较多时,batch_size尽量越大越好。

width、height、channels

width = 416
height = 416
channels = 3
三个参数为输入图像的参数信息 width和height影响网络对输入图像的分辨率,从而影响precision,只可以设置成32的倍数(256,416,544…).

momentum

momentum = 0.9
动量参数,这个值影响着梯度下降到最优值得速度.

decay

decay = 0.0005
权重衰减正则项,防止过拟合.

angle、saturation、exposure 、hue

angle = 0  通过旋转角度来生成更多训练样本,图片角度变化,单位为度,假如angle=5,就是生成新图片的时候随机旋转-5~5度.
saturation = 1.5  通过调整饱和度来生成更多训练样本,1.5倍
exposure = 1.5  通过调整曝光量来生成更多训练样本,1.5倍
hue = .1  通过调整色调来生成更多训练样本,-0.1~0.1

learning_rate、policy、steps、scales

(1)learning_rate=0.001
1.学习率决定着权值更新的速度,设置得太大会使结果超过最优值,太小会使下降速度过慢。
2.刚开始训练时可以将学习率设置的高一点,而一定轮数之后,将其减小
3.在训练过程中,一般根据训练轮数设置动态变化的学习率。
4.刚开始训练时:学习率以 0.01~0.001 为宜。一定轮数过后:逐渐减缓。接近训练结束:学习速率的衰减应该在100倍以上.
(2)policy = steps
这个是学习率调整的策略,policy有:constant, steps, exp, poly, step, sig, RANDOM,constant等方式.
(3)下面这两个参数steps和scale是设置学习率的变化,比如迭代到100次时,学习率增大10倍;迭代到40000次时,学习率衰减十倍;45000次迭代时,学习率又会在前一个学习率的基础上衰减十倍.
steps=100,40000,45000
scales=10, .1, .1

max_batches

max_batches = 60000
训练达到60000后停止学习.

batch_normalize、filters、size、stride、pad、activation

1.batch_normalize=1    是否做BN(对每层输入加同分布约束,再加参数线性变换学习其表达能力. )
2.filters=32    输出特征图的数量
3.size=3    卷积核的尺寸(滤波器,卷积核,感受野的大小).
4.stride=1    做卷积运算的步长
5.pad=1    设置pad大小 (如果pad为0,padding由 padding参数指定;如果pad为1,padding大小为size/2,padding应该是对输入图像左边缘拓展的像素数量.)
6.activation=leaky    激活函数的类型
总结知识:
在这里插入图片描述

epochs

epochs被定义为向前和向后传播中所有批次的单次训练迭代。这意味着1个周期是整个输入数据的单次向前和向后传递。简单说,epochs指的就是训练过程中数据将被“轮”多少次。
公式:one epoch = numbers of iterations = N = 训练样本的数量/batch_size
例:有786个训练样本,batch_size=32,训练总次数max_batches=40000。那epochs=40000/(786/32)≈1628.5。

iterations

iterations(迭代):每一次迭代都是一次权重更新,每一次权重更新需要batch_size个数据进行Forward运算得到损失函数,再BP算法更新参数。
1个iteration = 使用batchsize个样本训练一次。

YOLOv2

random

  • random=1 每隔几次迭代后就会微调网络的输入尺寸。随机选择新的输入图像尺寸{320,352,…,608}(32的倍数)。使得网络可以适应多种不同尺度的输入。
  • random=0 每次训练大小与输入大小一致。

bias_match

bias_match=1
如果为1,计算best iou时,预测宽高强制与anchors一致。

  • 8
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值