训练和推理阶段验证集的精度不一致的原因分析
今天学生碰到了一个问题:训练和推理时,同一批验证集的精度不一致,经排查,原因分析如下:
验证集有9个数据,训练阶段,在计算验证集的精度时,batch_size=8,因此有2个batch,分别计算2个batch的平均精度后,求平均,得到验证集的平均精度,用表示第个样本的精度,则验证集的平均精度为:
推理阶段,在计算验证集的精度时,batch_size=1,有9个batch,计算完所有的batch精度后,求平均,得到验证集的平均精度为:
可以发现。
综上,由于训练阶段验证集的batch_size不能被验证集样本数整除,计算得到的平均精度有偏差,导致了上述问题。解决办法如下:
把训练阶段验证集的batch_size设置为1即可。