Усреднение прошлых градиентов в керасе / тензорном потоке - PullRequest
0 голосов
/ 07 февраля 2020

Я пытаюсь протестировать эту статью Динами c Локальное сожаление по поводу невыпуклых онлайн-прогнозов . Авторы любезно разместили свой код на github , но он написан на PyTorch, и я использую Keras / TF (1.4). Поэтому мне нужно перенести код на себя.

Идея их оптимизатора очень проста:

  1. Пусть window будет скользящим окном прошлых градиентов
  2. Каждый раз t, обновлять веса по экспоненциально взвешенной сумме прошлых window градиентов, оцененных по текущему weights

Я дошел до этой части их кода:

            for p in group['params']:
                sum_grad = 0
                denominator = 0
                for i in range(len(self.grad_list)):
                    sum_grad += (math.pow(self.a, len(self.grad_list) - 1 - i) * self.grad_list[i][count])
                    denominator += math.pow(self.a, len(self.grad_list) - 1 - i)
                result_grad = sum_grad / denominator
                p.data.add_(-group['lr'] / math.sqrt(t), result_grad)
                count += 1

Я понимаю, что TF работает так: все символично c. Итак, как вы храните список в TF?

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