Refactor DDPG

This commit is contained in:
Shangtong Zhang
2018-04-25 23:38:17 -06:00
parent ceea0a474b
commit 2eefb04b9d
2 changed files with 4 additions and 7 deletions
+2 -7
View File
@@ -91,19 +91,14 @@ class DDPGAgent(BaseAgent):
q = critic.predict(states, actions)
critic_loss = self.criterion(q, q_next)
critic.zero_grad()
self.critic_opt.zero_grad()
critic_loss.backward()
self.critic_opt.step()
actions = actor.predict(states, False)
var_actions = actions.detach().requires_grad_()
q = critic.predict(states, var_actions)
q.backward(critic.tensor(np.ones(q.size())))
policy_loss = -critic.predict(states, actor.predict(states)).mean()
actor.zero_grad()
self.actor_opt.zero_grad()
actions.backward(-var_actions.grad)
policy_loss.backward()
torch.nn.utils.clip_grad_value_(actor.parameters(), config.gradient_clip)
self.actor_opt.step()
+2
View File
@@ -18,6 +18,8 @@ class BaseNet:
self.to(self.device)
def tensor(self, x):
if isinstance(x, torch.Tensor):
return x
x = torch.tensor(x, device=self.device, dtype=torch.float32)
return x