def sync_target_network(self) -> None: """Synchronize target network with current network.""" synchronize_parameters( src=self.model.q_function, dst=self.target_model, method=self.target_update_method, tau=self.soft_update_tau, )
def sync_target_network(self): """Synchronize target network with current network.""" synchronize_parameters( src=self.q_func1, dst=self.target_q_func1, method="soft", tau=self.soft_update_tau, ) synchronize_parameters( src=self.q_func2, dst=self.target_q_func2, method="soft", tau=self.soft_update_tau, )
def sync_target_network(self): """Synchronize target network with current network.""" if self.target_model is None: self.target_model = copy.deepcopy(self.model) def flatten_parameters(mod): if isinstance(mod, torch.nn.RNNBase): mod.flatten_parameters() # RNNBase.flatten_parameters must be called again after deep-copy. # See: https://discuss.pytorch.org/t/why-do-we-need-flatten-parameters-when-using-rnn-with-dataparallel/46506 # NOQA self.target_model.apply(flatten_parameters) # set target n/w to evaluate only. self.target_model.eval() else: synchronize_parameters( src=self.model, dst=self.target_model, method=self.target_update_method, tau=self.soft_update_tau, )