Индивидуальные потери при обучении с пользовательскими градиентами - PullRequest
0 голосов
/ 12 февраля 2020

Я пытаюсь написать собственную потерю в Tensorflow v2, для простоты предположим, что я использую среднеквадратичную потерю следующим образом:

loss_object = tf.keras.losses.MeanSquaredError()


def loss(model, x, y, training):
  # training=training is needed only if there are layers with different
  # behavior during training versus inference (e.g. Dropout).
  y_ = model(x, training=training)
  return loss_object(y_true=y, y_pred=y_)

Теперь я знаю, что Tensorflow выполняет автоматизации c дифференцирование .

Но я хочу указать свой пользовательский градиент , в алгоритме BackPropagation, если мы используем MSE, мы должны сделать следующее

\ frac {\ частичный E} {\ частичный w} = \ frac {\ частичный E} {\ частичный y_i} \ frac {\ частичный y_i} {\ частичный net_i} \ frac {\ частичный net_i} {\ частичный w}

\ frac {\ частичный E} {\ частичный w} = (y - \ hat {y}) * D (активация) * x

Возможно ли в Keras заменить (y - \ hat {y}) с (у - р) где p - тензор, который передается во время обучения перед применением градиентов.

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