在Keras或Tensorflow中clipnorm
重新调整大“梯度”以具有特定范数,并且clipvalue
限制“梯度”的所有值
但是如果你把它们中的一个和moemntum
或者类似的东西结合起来会发生什么呢?它是应用在梯度上,还是更确切地说,应用在速度上
A)是否将clipnorm
应用于关于参数的损失的实际纯数学梯度g
,然后使用该剪裁梯度使用旧梯度的动量和学习率计算更新步骤
velocity = momentum * velocity - learning_rate * clipnorm(g)
w = w + velocity
或
B)首先,将旧梯度的动量与未修改的新梯度相结合。然后,结果向量(“速度”)通过clipnorm进行缩放
velocity = clipnorm(momentum * velocity - learning_rate * g)
w = w + velocity
或B')
velocity = momentum * velocity - learning_rate * g
w = w + clipnorm(velocity)
或者也有可能是‘’
velocity = momentum * velocity - clipnorm(learning_rate * g)
w = w + velocity
A(和A')将面临这样一个问题,即即使梯度的范数有界,由于动量的作用,速度可能会变得任意大,而clipnorm会使分解速度或改变方向的速度变得更慢
从我的角度来看,B是最合理的,但我不知道它实际上是如何实现的
对于clipvalue
和adam
以及其他基于动量的算法,可以类似地问同样的问题
PS:如果clipnorm
没有按照B中的建议实施,我想知道是否也有可能通过使用不同的选项在keras中获得B
目前没有回答
相关问题 更多 >
编程相关推荐