if REGULARIZATION_LOSS_WEIGHT != 0.:
f_num = len(feature_map)
loss_r = 0.
for f_m in feature_map:
loss_r += (f_m ** 2).mean()
loss_r *= REGULARIZATION_LOSS_WEIGHT
loss_r /= float(f_num)
这段代码是BiDet算法中的最后一个重要部分,它实现了正则化损失(Regularization Loss,RL)的功能。RL的目的是在训练过程中增加特征图的稀疏性,从而减少二值化网络的计算量和内存占用。
具体来说,这段代码的作用是计算每个特征图的平方均值,然后对所有特征图求和,再乘以一个正则化系数。这样做的好处是可以惩罚特征图中的非零元素,鼓励特征图中的元素趋向于0或1¹。这样可以提高二值化网络的压缩率和加速比¹。
这段代码中,f_num是特征图的数量,loss_r是正则化损失,f_m是每个特征图,REGULARIZATION_LOSS_WEIGHT是正则化系数。