Как масштабировать градиент во время пакетного обновления в керасе? - PullRequest
0 голосов
/ 07 декабря 2018

Я использую стандартную модель кераса и тренируюсь на партии (используя функцию train_on_batch).Теперь я хочу взять градиент каждого элемента в пакете и масштабировать его (умножить каждый градиент выборки на имеющееся у меня значение выборки), и после масштабирования каждого градиента его можно суммировать и использовать для обновлениясуществующие веса.Есть ли способ сделать это с помощью данных функций?И если нет, есть ли способ для меня, чтобы манипулировать этим с помощью tenorflow?(учитывая модель, а остальное было написано в кератах)

Функция выглядит следующим образом: (цикл иллюстрирует, что это происходит для всех образцов в партии)

grad = 0, w= #array of size batch_size
for i in batch_size:
    grad <- grad + w_i*grad_i

1 Ответ

0 голосов
/ 07 декабря 2018
  • Используйте аргумент sample_weights в методе fit модели.
  • Или, если используется генератор, заставить генератор возвращать не только X_train, y_train, но X_train, y_train, sample_weights.

В обоих случаях sample_weights должен быть одномерным вектором с тем же числом выборок, что и данные.

...