mirror of
https://github.com/wassname/DeepRL.git
synced 2026-09-09 11:13:47 +08:00
found NaN's for small std
This commit is contained in:
@@ -155,6 +155,11 @@ class ProximalPolicyOptimization:
|
||||
probs_old = actor_net.log_density(actions, mean_old, log_std_old, std_old)
|
||||
mean, std, log_std = actor_net.predict(states)
|
||||
probs = actor_net.log_density(actions, mean, log_std, std)
|
||||
|
||||
# avoid NaNs with small std I going to clamp this - mike
|
||||
probs_old = probs_old.clamp(-10,20)
|
||||
probs = probs.clamp(-10,20)
|
||||
|
||||
ratio = (probs - probs_old).exp()
|
||||
obj = ratio * advantages
|
||||
obj_clipped = ratio.clamp(1.0 - self.config.ppo_ratio_clip, 1.0 + self.config.ppo_ratio_clip) * advantages
|
||||
|
||||
@@ -154,7 +154,7 @@ class GaussianActorNet(nn.Module, BasicNet):
|
||||
|
||||
def log_density(self, x, mean, log_std, std):
|
||||
var = std.pow(2)
|
||||
log_density = -(x - mean).pow(2) / (2 * var) - 0.5 * torch.log(2 * Variable(torch.FloatTensor([np.pi])).expand_as(x)) - log_std
|
||||
log_density = -(x - mean).pow(2) / (2 * var + 1e-5) - 0.5 * torch.log(2 * Variable(torch.FloatTensor([np.pi])).expand_as(x)) - log_std
|
||||
return log_density.sum(1)
|
||||
|
||||
def entropy(self, std):
|
||||
|
||||
Reference in New Issue
Block a user