Я собираю DDPG-агент, который является алгоритмом обучения подкрепления. Во всяком случае, я обнаружил некоторые источники, на которые я мог ссылаться. Те, казалось, работали. Но я запутался, используя K.function () в keras.
Ниже функция get_soft_target_model_updates возвращает (старый вес, новый вес) в отличие от написанной официальной документацией keras «updates: список операций обновления». Итак, я думаю, что нужно вернуть K.update (старый тензор, новый тензор).
def get_soft_target_model_updates(target, source, tau):
target_weights = target.trainable_weights + sum([l.non_trainable_weights for l in target.layers], [])
source_weights = source.trainable_weights + sum([l.non_trainable_weights for l in source.layers], [])
assert len(target_weights) == len(source_weights)
updates = []
for tw, sw in zip(target_weights, source_weights):
updates.append((tw, tau * sw + (1. - tau) * tw))
return updates
if self.tau_for_actor < 1:
updates += get_soft_target_model_updates(self.target_actor, self.actor, self.tau_for_actor)
updates += self.actor.updates
self.actor_train_fn = K.function(state_inputs + [K.learning_phase()], [self.actor(state_inputs)], updates=updates)