深度学习
文章目录
前言
手把手调参
1. --epochs ,–batch-size和 --patience
–epoch直译为“时期”,在算法中表示模型对整个训练数据集的一次完整迭代。当所有训练样本在神经网络中都进行了一次正向传播和一次反向传播,称为进行了一次epoch。
当1个Epoch(也就是所有的训练样本)数量太过庞大,就需要把它分成多个小块,也就是分成多个Batch 来进行训练。每个batch的大小便称为Batch_Size。
Batch Size合适的优点:
1、通过并行化提高内存的利用率。就是尽量让你的GPU满载运行,提高训练速度。
2、单个epoch的迭代次数减少了,参数的调整也慢了,假如要达到相同的识别精度,需要更多的epoch。
3、适当Batch Size使得梯度下降方向更加准确。
Batch Size从小到大的变化对网络影响
1、没有Batch Size,梯度准确,只适用于小样本数据库 todo: 何谓“没有Batch Size”?
2、Batch Size=1,梯度变来变去,非常不准确,网络很难收敛。
3、Batch Size增大,梯度变准确,
4、Batch Size增大,梯度已经非常准确,再增加Batch Size也没有用
注意:Batch Size增大了,要到达相同的准确度,必须要增大epoch。
如何找到合适的batch size?
我认为可以使用–patience这个参数, 其作用是:如果模型在default值轮数里没有提升,则停止训练模型。
我们可以给一个很大的epoch去训练,再加上–patience,通过它停止时已训练的epoch数即可得知最佳epoch数。
2. --imgsz
训练集和测试集图片的像素大小;输入默认640*640。
3. --rect
是否采用矩阵推理的方