如何在Keras中创建自定义图层以获取和操作渐变

时间:2018-08-29 19:36:12

标签: python tensorflow machine-learning keras

我正在尝试从Mitigating Unwanted Biases with Adversarial Learning实施梯度投影技术

模型架构是

  • 1)输入层
  • 2)密集的定长层
  • 3)自定义渐变项目层
    • 4a)任务1层
    • 4b)任务2层(对抗性任务)

我想用自定义图层(3)处理任务1和任务2的渐变。目前,我计划在自定义图层的调用中添加类似的内容

@tf.RegisterGradient('blah')
def proj_gradients(op, grad):
    return grad[0] - grad[1]

g = K.get_session().graph
with g.gradient_override_map({'Identity': 'blah'}):
    y = tf.identity(X)

有没有更直观的Keras方法?

1 个答案:

答案 0 :(得分:1)

tf.custom_gradient是在此处使用的最佳工具。它使您可以在调用站点上定义渐变函数,具有比覆盖映射更好的界面,并且可以很好地执行。