在用resnet训练MsCeleb1M时,在训练时梯度太大了,经常有4或5位数的梯度,使用梯度裁剪方法裁剪梯度,即在solver中加入
clip_gradients:
10 #float
裁剪时,取多大值比较合适? 参考教程Caffe源码解读:防止梯度爆炸的措施-梯度裁剪, 梯度裁剪是一种在非常深度的网络(通常是循环神经网络)中用于防止梯度爆炸(exploding gradient)的技术。 执行梯度裁剪的方法有很多,但常见的一种是当参数矢量的 L2 范数(L2 norm)超过一个特定阈值时对参数矢量的梯 度进行标准化,这个特定阈值根据函数:新梯度=梯度 * 阈值 / 梯度L2范数 new_gradients = gradients * threshold / l2_norm(gradients)。