Тензор потока: изменение точек данных, используемых при оценке функции потерь после каждого шага градиента, с использованием tf-оптимизатора - PullRequest
0 голосов
/ 29 декабря 2018

Обычно поток оптимизатора tf выглядит следующим образом:

# Create an optimizer.
opt = GradientDescentOptimizer(learning_rate=0.1)

# Compute the gradients for a list of variables.
grads_and_vars = opt.compute_gradients(loss, <list of variables>)

# grads_and_vars is a list of tuples (gradient, variable).  Do 
# whatever you
# need to the 'gradient' part, for example cap them, etc.
capped_grads_and_vars = [(MyCapper(gv[0]), gv[1]) for gv in grads_and_vars]

# Ask the optimizer to apply the capped gradients.
opt.apply_gradients(capped_grads_and_vars)

Как я могу изменить этот поток так, чтобы функция потерь вычислялась с использованием различных точек данных после каждого шага оптимизатора, и эти точки данных вычислялись как функция отобновленные параметры?

Скажите, что у меня есть стохастический процесс, который имеет определенную параметризацию, а значения параметров определяются с помощью градиентного спуска.После обновления значений параметров мне нужно повторно выбрать точки из этого процесса и оценить вероятность этих точек (вместо точек, которые я использовал на предыдущем шаге).Могу ли я легко включить это в типичный оптимизатор тф?Концептуально, это похоже на пакетный градиентный спуск, однако точки данных каждой серии генерируются в цикле градиентного спуска таким образом, который зависит от значений параметров предыдущей итерации.

...