Как создать собственный слой для получения и управления градиентами в Керасе - PullRequest
0 голосов
/ 29 августа 2018

Я пытаюсь реализовать метод проекции градиента из Снижение нежелательных предубеждений с помощью состязательного обучения

Архитектура модели:

  • 1) Входной слой
  • 2) Плотный слой фиксированной длины
  • 3) Пользовательский градиентный слой проекта
    • 4a) Задание 1 слоя
    • 4b) Задание 2 слоя (состязательное задание)

Я бы хотел управлять градиентами из задачи 1 и задачи 2 с помощью пользовательского слоя (3). В настоящее время я планирую сделать что-то подобное в вызове пользовательского слоя

@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 голосов
/ 01 сентября 2018

tf.custom_gradient - лучший инструмент для использования здесь. Он позволяет вам определять функцию градиента на сайте вызова, имеет более приятный интерфейс, чем карта переопределения, и хорошо работает с нетерпеливым исполнением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...