“让Keras更酷一些!”:分层的学习率和自由的梯度( 六 )

5. 这种做法有以上限制 , 是因为我们不想通过修改或者重写优化器的方式来实现这个功能 。 如果你决定要自己修改优化器 , 请参考《“让Keras更酷一些!”:小众的自定义优化器》[2

在这部分内容中 , 我们将学习对梯度的更为自由的控制 。 这部分内容涉及到对优化器的修改 , 但不需要完全重写优化器 。

Keras优化器的结构

要修改优化器 , 必须先要了解 Keras 优化器的结构 。 在《“让Keras更酷一些!”:小众的自定义优化器》[2
 一文我们已经初步看过了 , 现在我们重新看一遍 。

Keras 优化器代码:

https://github.com/keras-team/keras/blob/master/keras/optimizers.py

随便观察一个优化器 , 就会发现你要自定义一个优化器 , 只需要继承 Optimizer 类 , 然后定义 get_updates \n方法 。 但本文我们不想做新的优化器 , 只是想要对梯度有所控制 。 可以看到 , 梯度的获取其实是在父类 Optimizer 的 get_gradients \n方法中:

推荐阅读