added support for different activations, number of hidden layers, options, running a big run over this
This commit is contained in:
@@ -9,3 +9,4 @@ hyperopt
|
|||||||
psutil
|
psutil
|
||||||
fire
|
fire
|
||||||
stable_baselines3
|
stable_baselines3
|
||||||
|
tensorboard
|
||||||
@@ -7,6 +7,7 @@ from src.core.value import SetValue
|
|||||||
from src.safe_options.policy import SetMaskedDiscretePolicy
|
from src.safe_options.policy import SetMaskedDiscretePolicy
|
||||||
from src.core.discriminator import DeepsetDiscriminator
|
from src.core.discriminator import DeepsetDiscriminator
|
||||||
import torch.optim
|
import torch.optim
|
||||||
|
import torch.nn
|
||||||
from intersim.envs import IntersimpleLidarFlatRandom
|
from intersim.envs import IntersimpleLidarFlatRandom
|
||||||
from intersim.envs.intersimple import speed_reward
|
from intersim.envs.intersimple import speed_reward
|
||||||
import functools
|
import functools
|
||||||
@@ -44,11 +45,14 @@ def training_function(config):
|
|||||||
),
|
),
|
||||||
stop_on_collision=False,
|
stop_on_collision=False,
|
||||||
), collision_distance=6, collision_penalty=100), lambda obs: (obs - obs_min) / (obs_max - obs_min + 1e-10))
|
), collision_distance=6, collision_penalty=100), lambda obs: (obs - obs_min) / (obs_max - obs_min + 1e-10))
|
||||||
), options=[(0, 5), (1, 5), (2, 5), (4, 5), (6, 5), (8, 5), (10, 5)], safe_actions_collision_method='circle', abort_unsafe_collision_method='circle') for _ in range(60)]
|
), options=config['policy']['option'], safe_actions_collision_method='circle', abort_unsafe_collision_method='circle') for _ in range(60)]
|
||||||
|
|
||||||
env_fn = lambda i: envs[i]
|
env_fn = lambda i: envs[i]
|
||||||
|
|
||||||
policy = SetMaskedDiscretePolicy(env_fn(0).action_space.n, hidden_layer_size=config['policy']['hidden_layer_size']) # config net architecture
|
policy = SetMaskedDiscretePolicy(env_fn(0).action_space.n,
|
||||||
|
n_hidden_layers=config['policy']['n_hidden_layers'],
|
||||||
|
hidden_layer_size=config['policy']['hidden_layer_size'],
|
||||||
|
activation=config['policy']['activation'] ) # config net architecture
|
||||||
pi_opt = torch.optim.Adam(policy.parameters(), lr=config['policy']['learning_rate'])
|
pi_opt = torch.optim.Adam(policy.parameters(), lr=config['policy']['learning_rate'])
|
||||||
pi_lr_scheduler = torch.optim.lr_scheduler.ExponentialLR(pi_opt, gamma=config['policy']['learning_rate_decay'])
|
pi_lr_scheduler = torch.optim.lr_scheduler.ExponentialLR(pi_opt, gamma=config['policy']['learning_rate_decay'])
|
||||||
|
|
||||||
@@ -105,7 +109,15 @@ analysis = tune.run(
|
|||||||
'learning_rate_decay': tune.grid_search([1.0]),
|
'learning_rate_decay': tune.grid_search([1.0]),
|
||||||
'clip_ratio': tune.grid_search([0.2]),
|
'clip_ratio': tune.grid_search([0.2]),
|
||||||
'iterations_per_epoch': tune.grid_search([100]),
|
'iterations_per_epoch': tune.grid_search([100]),
|
||||||
'hidden_layer_size': tune.grid_search([10])
|
'hidden_layer_size': tune.grid_search([10, 20, 30]),
|
||||||
|
'n_hidden_layers': tune.grid_search([1, 2, 3]),
|
||||||
|
'activation':tune.grid_search([torch.nn.LeakyReLU, torch.nn.Tanh]),
|
||||||
|
'option': tune.grid_search([[(0, 5), (1, 5), (2, 5), (4, 5), (6, 5), (8, 5), (10, 5)],
|
||||||
|
[(0, 5), (1, 5), (2, 5), (4, 5), (6, 5), (8, 5), (10, 5),
|
||||||
|
(0, 10), (1, 10), (2, 10), (4, 10), (6, 10), (8, 10), (10, 10)],
|
||||||
|
[(0, 5), (1, 5), (2, 5), (4, 5), (6, 5), (8, 5), (10, 5),
|
||||||
|
(0, 10), (1, 10), (2, 10), (4, 10), (6, 10), (8, 10), (10, 10),
|
||||||
|
(0, 20), (1, 20), (2, 20), (4, 20), (6, 20), (8, 20), (20, 10)]])
|
||||||
},
|
},
|
||||||
'value': {
|
'value': {
|
||||||
'learning_rate': tune.grid_search([1e-3]),
|
'learning_rate': tune.grid_search([1e-3]),
|
||||||
|
|||||||
@@ -51,15 +51,18 @@ class Policy(BasePolicy):
|
|||||||
|
|
||||||
class DiscretePolicy(BasePolicy):
|
class DiscretePolicy(BasePolicy):
|
||||||
|
|
||||||
def __init__(self, *args, hidden_layer_size=50, **kwargs):
|
def __init__(self, *args, hidden_layer_size=50, n_hidden_layers=2, activation=nn.Tanh, **kwargs):
|
||||||
super().__init__(*args, **kwargs)
|
super().__init__(*args, **kwargs)
|
||||||
self.nn = nn.Sequential(
|
layers = [nn.LazyLinear(hidden_layer_size), activation()] * n_hidden_layers
|
||||||
nn.LazyLinear(hidden_layer_size),
|
self.nn = nn.Sequential(*layers, nn.LazyLinear(self.action_dim))
|
||||||
nn.Tanh(),
|
|
||||||
nn.LazyLinear(hidden_layer_size),
|
#self.nn = nn.Sequential(
|
||||||
nn.Tanh(),
|
# nn.LazyLinear(hidden_layer_size),
|
||||||
nn.LazyLinear(self.action_dim),
|
# nn.Tanh(),
|
||||||
)
|
# nn.LazyLinear(hidden_layer_size),
|
||||||
|
# nn.Tanh(),
|
||||||
|
# nn.LazyLinear(self.action_dim),
|
||||||
|
#)
|
||||||
|
|
||||||
def forward(self, states):
|
def forward(self, states):
|
||||||
return self.nn(states)
|
return self.nn(states)
|
||||||
|
|||||||
Reference in New Issue
Block a user