admin管理员组

文章数量:1597897

Darknet的cfg配置文件中,[xxx]表示网络的一层,其后的内容为该层的参数配置,[net]为特殊的层,用于配置整个网络,包含学习率,衰减系数等一系列超参数。

[net]      
# Testing
# batch=1               #测试时,batch和subdivisions都必须设置为1,否则会出错
# subdivisions=1
# Training
batch=64                #batch与一般意义上的batch概念稍有出入,在这里表示网络积累多少个样本后进行一次反向传播
subdivisions=16         #subdivisions表示将一个batch的图片分subdivisions次完成网络的前向传播
  • 在Darknet中,batch和subdivisions是结合使用的,比如这里的batch=64,subdivisions=16 表示训练的过程中会将64张图片一次性加载进内存,但要分16次完成前向传播。也就是每次计算4张,而后将64张图片的loss累加求平均,再一次性后向传播更新权重参数。
  • subdivisions 必须为为8的倍数,一般设置16;batch的值通常稍微大点好,这样可以减小训练震荡,而且可以一定程度上减少训练时NAN的出现,但也要考虑电脑的显存能不能吃得消,否则会出现:CUDA Error: out of memory。
width=416              #网络输入的宽
height=416             #网络输入的高
channels=3             #网络输入的通道数
momentum=0.9           #动量梯度下降优化方法中的动量参数
decay=0.0005           #权重衰减正则项,用于防止过拟合
angle=0                #数据增强参数,通过旋转角度来生成更多训练样本
saturation = 1.5       #数据增强参数,通过调整饱和度来生成更多训练样本
exposure = 1.5         #数据增强参数,通过调整曝光量来生成更多训练样本
hue=.1                 #数据增强参数,通过调整色调来生成更多训练样本

learning_rate=0.001    #学习率,决定着权值更新的速度
burn_in=1000           #在迭代次数小于burn_in时,其学习率的更新为一种方式,大于burn_in时,采用policy的更新方式
max_batches = 50200    #训练迭代次数达到max_batches后停止学习,跑完一个batch为一次
policy=steps           #学习率调整的策略
steps=40000,45000      #steps和scale是设置学习率的变化
scales=.1,.1           #迭代到400000次时,学习率衰减十倍,45000次时,学习率又会在前一个学习率的基础上衰减十倍
  • momentum:动量梯度下降是利用梯度的指数加权平均值来更新权重,其用公式可表示为:
    { V d w = β ∗ V d w + ( 1 − β ) d w w = w − α V d w \left\{ \begin{array}{c} V_{d_w}=\beta*V_{d_w}+(1-\beta)d_w \\ w = w-{\alpha}V_{d_w} \end{array} \right. { Vd

本文标签: 配置文件详解参数darknetcfg