araffin commited on
Commit
c5ab26a
1 Parent(s): 3d4e83c

Initial commit

Browse files
.gitattributes CHANGED
@@ -25,3 +25,5 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
25
  *.zip filter=lfs diff=lfs merge=lfs -text
26
  *.zstandard filter=lfs diff=lfs merge=lfs -text
27
  *tfevents* filter=lfs diff=lfs merge=lfs -text
 
 
 
25
  *.zip filter=lfs diff=lfs merge=lfs -text
26
  *.zstandard filter=lfs diff=lfs merge=lfs -text
27
  *tfevents* filter=lfs diff=lfs merge=lfs -text
28
+ *.mp4 filter=lfs diff=lfs merge=lfs -text
29
+ vec_normalize.pkl filter=lfs diff=lfs merge=lfs -text
README.md ADDED
@@ -0,0 +1,75 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ library_name: stable-baselines3
3
+ tags:
4
+ - ReacherBulletEnv-v0
5
+ - deep-reinforcement-learning
6
+ - reinforcement-learning
7
+ - stable-baselines3
8
+ model-index:
9
+ - name: PPO
10
+ results:
11
+ - metrics:
12
+ - type: mean_reward
13
+ value: 19.12 +/- 9.53
14
+ name: mean_reward
15
+ task:
16
+ type: reinforcement-learning
17
+ name: reinforcement-learning
18
+ dataset:
19
+ name: ReacherBulletEnv-v0
20
+ type: ReacherBulletEnv-v0
21
+ ---
22
+
23
+ # **PPO** Agent playing **ReacherBulletEnv-v0**
24
+ This is a trained model of a **PPO** agent playing **ReacherBulletEnv-v0**
25
+ using the [stable-baselines3 library](https://github.com/DLR-RM/stable-baselines3)
26
+ and the [RL Zoo](https://github.com/DLR-RM/rl-baselines3-zoo).
27
+
28
+ The RL Zoo is a training framework for Stable Baselines3
29
+ reinforcement learning agents,
30
+ with hyperparameter optimization and pre-trained agents included.
31
+
32
+ ## Usage (with SB3 RL Zoo)
33
+
34
+ RL Zoo: https://github.com/DLR-RM/rl-baselines3-zoo<br/>
35
+ SB3: https://github.com/DLR-RM/stable-baselines3<br/>
36
+ SB3 Contrib: https://github.com/Stable-Baselines-Team/stable-baselines3-contrib
37
+
38
+ ```
39
+ # Download model and save it into the logs/ folder
40
+ python -m utils.load_from_hub --algo ppo --env ReacherBulletEnv-v0 -orga sb3 -f logs/
41
+ python enjoy.py --algo ppo --env ReacherBulletEnv-v0 -f logs/
42
+ ```
43
+
44
+ ## Training (with the RL Zoo)
45
+ ```
46
+ python train.py --algo ppo --env ReacherBulletEnv-v0 -f logs/
47
+ # Upload the model and generate video (when possible)
48
+ python -m utils.push_to_hub --algo ppo --env ReacherBulletEnv-v0 -f logs/ -orga sb3
49
+ ```
50
+
51
+ ## Hyperparameters
52
+ ```python
53
+ OrderedDict([('batch_size', 64),
54
+ ('clip_range', 'lin_0.4'),
55
+ ('ent_coef', 0.0),
56
+ ('env_wrapper', 'sb3_contrib.common.wrappers.TimeFeatureWrapper'),
57
+ ('gae_lambda', 0.9),
58
+ ('gamma', 0.99),
59
+ ('learning_rate', 3e-05),
60
+ ('max_grad_norm', 0.5),
61
+ ('n_envs', 8),
62
+ ('n_epochs', 20),
63
+ ('n_steps', 512),
64
+ ('n_timesteps', 1000000.0),
65
+ ('normalize', True),
66
+ ('policy', 'MlpPolicy'),
67
+ ('policy_kwargs',
68
+ 'dict(log_std_init=-2.7, ortho_init=False, '
69
+ 'activation_fn=nn.ReLU, net_arch=[dict(pi=[256, 256], vf=[256, '
70
+ '256])] )'),
71
+ ('sde_sample_freq', 4),
72
+ ('use_sde', True),
73
+ ('vf_coef', 0.5),
74
+ ('normalize_kwargs', {'norm_obs': True, 'norm_reward': False})])
75
+ ```
args.yml ADDED
@@ -0,0 +1,59 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ !!python/object/apply:collections.OrderedDict
2
+ - - - algo
3
+ - ppo
4
+ - - env
5
+ - ReacherBulletEnv-v0
6
+ - - env_kwargs
7
+ - null
8
+ - - eval_episodes
9
+ - 10
10
+ - - eval_freq
11
+ - 10000
12
+ - - gym_packages
13
+ - []
14
+ - - hyperparams
15
+ - null
16
+ - - log_folder
17
+ - rl-trained-agents/
18
+ - - log_interval
19
+ - -1
20
+ - - n_evaluations
21
+ - 20
22
+ - - n_jobs
23
+ - 1
24
+ - - n_startup_trials
25
+ - 10
26
+ - - n_timesteps
27
+ - -1
28
+ - - n_trials
29
+ - 10
30
+ - - num_threads
31
+ - -1
32
+ - - optimize_hyperparameters
33
+ - false
34
+ - - pruner
35
+ - median
36
+ - - sampler
37
+ - tpe
38
+ - - save_freq
39
+ - -1
40
+ - - save_replay_buffer
41
+ - false
42
+ - - seed
43
+ - 93887241
44
+ - - storage
45
+ - null
46
+ - - study_name
47
+ - null
48
+ - - tensorboard_log
49
+ - ''
50
+ - - trained_agent
51
+ - ''
52
+ - - truncate_last_trajectory
53
+ - true
54
+ - - uuid
55
+ - false
56
+ - - vec_env
57
+ - dummy
58
+ - - verbose
59
+ - 1
config.yml ADDED
@@ -0,0 +1,38 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ !!python/object/apply:collections.OrderedDict
2
+ - - - batch_size
3
+ - 64
4
+ - - clip_range
5
+ - lin_0.4
6
+ - - ent_coef
7
+ - 0.0
8
+ - - env_wrapper
9
+ - sb3_contrib.common.wrappers.TimeFeatureWrapper
10
+ - - gae_lambda
11
+ - 0.9
12
+ - - gamma
13
+ - 0.99
14
+ - - learning_rate
15
+ - 3.0e-05
16
+ - - max_grad_norm
17
+ - 0.5
18
+ - - n_envs
19
+ - 8
20
+ - - n_epochs
21
+ - 20
22
+ - - n_steps
23
+ - 512
24
+ - - n_timesteps
25
+ - 1000000.0
26
+ - - normalize
27
+ - true
28
+ - - policy
29
+ - MlpPolicy
30
+ - - policy_kwargs
31
+ - dict(log_std_init=-2.7, ortho_init=False, activation_fn=nn.ReLU, net_arch=[dict(pi=[256,
32
+ 256], vf=[256, 256])] )
33
+ - - sde_sample_freq
34
+ - 4
35
+ - - use_sde
36
+ - true
37
+ - - vf_coef
38
+ - 0.5
env_kwargs.yml ADDED
@@ -0,0 +1 @@
 
 
1
+ {}
ppo-ReacherBulletEnv-v0.zip ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:e7d7741378cf0db675627b6a7b74abca793425c5ba6a4ce5a0241ffb063e68e1
3
+ size 1693990
ppo-ReacherBulletEnv-v0/_stable_baselines3_version ADDED
@@ -0,0 +1 @@
 
 
1
+ 1.5.1a8
ppo-ReacherBulletEnv-v0/data ADDED
@@ -0,0 +1,121 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "policy_class": {
3
+ ":type:": "<class 'abc.ABCMeta'>",
4
+ ":serialized:": "gASVOwAAAAAAAACMIXN0YWJsZV9iYXNlbGluZXMzLmNvbW1vbi5wb2xpY2llc5SMEUFjdG9yQ3JpdGljUG9saWN5lJOULg==",
5
+ "__module__": "stable_baselines3.common.policies",
6
+ "__doc__": "\n Policy class for actor-critic algorithms (has both policy and value prediction).\n Used by A2C, PPO and the likes.\n\n :param observation_space: Observation space\n :param action_space: Action space\n :param lr_schedule: Learning rate schedule (could be constant)\n :param net_arch: The specification of the policy and value networks.\n :param activation_fn: Activation function\n :param ortho_init: Whether to use or not orthogonal initialization\n :param use_sde: Whether to use State Dependent Exploration or not\n :param log_std_init: Initial value for the log standard deviation\n :param full_std: Whether to use (n_features x n_actions) parameters\n for the std instead of only (n_features,) when using gSDE\n :param sde_net_arch: Network architecture for extracting features\n when using gSDE. If None, the latent features from the policy will be used.\n Pass an empty list to use the states as features.\n :param use_expln: Use ``expln()`` function instead of ``exp()`` to ensure\n a positive standard deviation (cf paper). It allows to keep variance\n above zero and prevent it from growing too fast. In practice, ``exp()`` is usually enough.\n :param squash_output: Whether to squash the output using a tanh function,\n this allows to ensure boundaries when using gSDE.\n :param features_extractor_class: Features extractor to use.\n :param features_extractor_kwargs: Keyword arguments\n to pass to the features extractor.\n :param normalize_images: Whether to normalize images or not,\n dividing by 255.0 (True by default)\n :param optimizer_class: The optimizer to use,\n ``th.optim.Adam`` by default\n :param optimizer_kwargs: Additional keyword arguments,\n excluding the learning rate, to pass to the optimizer\n ",
7
+ "__init__": "<function ActorCriticPolicy.__init__ at 0x7fee70935950>",
8
+ "_get_constructor_parameters": "<function ActorCriticPolicy._get_constructor_parameters at 0x7fee709359e0>",
9
+ "reset_noise": "<function ActorCriticPolicy.reset_noise at 0x7fee70935a70>",
10
+ "_build_mlp_extractor": "<function ActorCriticPolicy._build_mlp_extractor at 0x7fee70935b00>",
11
+ "_build": "<function ActorCriticPolicy._build at 0x7fee70935b90>",
12
+ "forward": "<function ActorCriticPolicy.forward at 0x7fee70935c20>",
13
+ "_get_action_dist_from_latent": "<function ActorCriticPolicy._get_action_dist_from_latent at 0x7fee70935cb0>",
14
+ "_predict": "<function ActorCriticPolicy._predict at 0x7fee70935d40>",
15
+ "evaluate_actions": "<function ActorCriticPolicy.evaluate_actions at 0x7fee70935dd0>",
16
+ "get_distribution": "<function ActorCriticPolicy.get_distribution at 0x7fee70935e60>",
17
+ "predict_values": "<function ActorCriticPolicy.predict_values at 0x7fee70935ef0>",
18
+ "__abstractmethods__": "frozenset()",
19
+ "_abc_impl": "<_abc_data object at 0x7fee70986840>"
20
+ },
21
+ "verbose": 1,
22
+ "policy_kwargs": {
23
+ ":type:": "<class 'dict'>",
24
+ ":serialized:": "gASVkgAAAAAAAAB9lCiMDGxvZ19zdGRfaW5pdJRHwAWZmZmZmZqMCm9ydGhvX2luaXSUiYwNYWN0aXZhdGlvbl9mbpSMG3RvcmNoLm5uLm1vZHVsZXMuYWN0aXZhdGlvbpSMBFJlTFWUk5SMCG5ldF9hcmNolF2UfZQojAJwaZRdlChNAAFNAAFljAJ2ZpRdlChNAAFNAAFldWF1Lg==",
25
+ "log_std_init": -2.7,
26
+ "ortho_init": false,
27
+ "activation_fn": "<class 'torch.nn.modules.activation.ReLU'>",
28
+ "net_arch": [
29
+ {
30
+ "pi": [
31
+ 256,
32
+ 256
33
+ ],
34
+ "vf": [
35
+ 256,
36
+ 256
37
+ ]
38
+ }
39
+ ]
40
+ },
41
+ "observation_space": {
42
+ ":type:": "<class 'gym.spaces.box.Box'>",
43
+ ":serialized:": "gASV3QEAAAAAAACMDmd5bS5zcGFjZXMuYm94lIwDQm94lJOUKYGUfZQojAVkdHlwZZSMBW51bXB5lIwFZHR5cGWUk5SMAmY0lImIh5RSlChLA4wBPJROTk5K/////0r/////SwB0lGKMA2xvd5SMFW51bXB5LmNvcmUubXVsdGlhcnJheZSMDF9yZWNvbnN0cnVjdJSTlGgGjAduZGFycmF5lJOUSwCFlEMBYpSHlFKUKEsBSwqFlGgLiUMoAACA/wAAgP8AAID/AACA/wAAgP8AAID/AACA/wAAgP8AAID/AAAAAJR0lGKMBGhpZ2iUaBFoE0sAhZRoFYeUUpQoSwFLCoWUaAuJQygAAIB/AACAfwAAgH8AAIB/AACAfwAAgH8AAIB/AACAfwAAgH8AAIA/lHSUYowNYm91bmRlZF9iZWxvd5RoEWgTSwCFlGgVh5RSlChLAUsKhZRoCIwCYjGUiYiHlFKUKEsDjAF8lE5OTkr/////Sv////9LAHSUYolDCgAAAAAAAAAAAAGUdJRijA1ib3VuZGVkX2Fib3ZllGgRaBNLAIWUaBWHlFKUKEsBSwqFlGgpiUMKAAAAAAAAAAAAAZR0lGKMCl9ucF9yYW5kb22UTowGX3NoYXBllEsKhZR1Yi4=",
44
+ "dtype": "float32",
45
+ "low": "[-inf -inf -inf -inf -inf -inf -inf -inf -inf 0.]",
46
+ "high": "[inf inf inf inf inf inf inf inf inf 1.]",
47
+ "bounded_below": "[False False False False False False False False False True]",
48
+ "bounded_above": "[False False False False False False False False False True]",
49
+ "_np_random": null,
50
+ "_shape": [
51
+ 10
52
+ ]
53
+ },
54
+ "action_space": {
55
+ ":type:": "<class 'gym.spaces.box.Box'>",
56
+ ":serialized:": "gASVHQwAAAAAAACMDmd5bS5zcGFjZXMuYm94lIwDQm94lJOUKYGUfZQojAVkdHlwZZSMBW51bXB5lIwFZHR5cGWUk5SMAmY0lImIh5RSlChLA4wBPJROTk5K/////0r/////SwB0lGKMA2xvd5SMFW51bXB5LmNvcmUubXVsdGlhcnJheZSMDF9yZWNvbnN0cnVjdJSTlGgGjAduZGFycmF5lJOUSwCFlEMBYpSHlFKUKEsBSwKFlGgLiUMIAACAvwAAgL+UdJRijARoaWdolGgRaBNLAIWUaBWHlFKUKEsBSwKFlGgLiUMIAACAPwAAgD+UdJRijA1ib3VuZGVkX2JlbG93lGgRaBNLAIWUaBWHlFKUKEsBSwKFlGgIjAJiMZSJiIeUUpQoSwOMAXyUTk5OSv////9K/////0sAdJRiiUMCAQGUdJRijA1ib3VuZGVkX2Fib3ZllGgRaBNLAIWUaBWHlFKUKEsBSwKFlGgpiUMCAQGUdJRijApfbnBfcmFuZG9tlIwUbnVtcHkucmFuZG9tLl9waWNrbGWUjBJfX3JhbmRvbXN0YXRlX2N0b3KUk5SMB01UMTk5MzeUhZRSlH2UKIwNYml0X2dlbmVyYXRvcpRoOYwFc3RhdGWUfZQojANrZXmUaBFoE0sAhZRoFYeUUpQoSwFNcAKFlGgIjAJ1NJSJiIeUUpQoSwNoDE5OTkr/////Sv////9LAHSUYolCwAkAAAAAAIBTwrOchwO1k3Lsq1vo5rLyz7aB2tUG72GhMU2ga7XM2RPmGJ90nHkvyKUbgMR5AUmeD0PkXeAYk5ITVczUSilk0giVvjTQnkRyegPwrb8Kc5t7PulgsQbadQNFC2591hZq6wQ0ZoO38/WlL2nvQmNDtVz3wndSzEZENy0IiW7Qjq53+xi2gE97nvlPMuwS2LmOXoWpGcquPXYtZytCgJ7F7scf9SIBXUvPJA/MGVJkRFeYcJ0K9RIXtela3jvE/0HPOrFftofdM9hYiaqizX97P8mUt2wPQx8xmX0bYJCrtwcdGUzeyPuOugD1z6ka3iX+IAalFvzQduPBTvXKQ9MBWnnfUFetzaqYhTrP0WHhMA/Ht9nWRUX4vUiuWi77gKSTLtizn2cHsqRyJMj43mOVvrbJtm3T5laAgDosou93H+ZNC0HiTVqmVP8Lsv3/JsoIWfaq43/tiUiTGgfVTTF1psbquA6tH5Icya9TC+0oH7X0htvTuZKBVDKM0C+fIAM8l/emTHKVm2ft/85WlYRpZ+XoFwvDLSCusSBQr4f7w/xdYy4GCKdeDDOfezLj5k6WvjminpO26pfQqfP9LJIYOUEgrwmoo5vMHp8a36i8kcQzwqUvi94rCQuS64xYFp7HcUF1aySvLmqGyXEyCeTa2GHwNpeYB9u4jyPRKocxbWSV4hOL16R9fH95KLmFfUaMD8zrZmLG5rLUfzMf1WOxNFwZpzInS+HWE1F4MWg2xcVst8upoi9ssNCNjtPbz1ley6m8DG7YZVNupay35yQ8/PAfu8uKRQsL7B4ArDFquqb66ABeDLPvviZ4c6y9Bi67Xye+uu6eNlYO/Boq5iiETBR9Kemi0T1eFf33JRNzywY9CJ1N9eTOb+3wxY/yK3iXhVISAMufwZby3YMCHwTAVr8o4ahkQaNipnYgwDvQT4XYuqBpmVAsUw41MjHfK43kXZ7UxPi/bB0FEr1H6UYynEiI2V3I7DDEsMFNEMyF3sA+J2YPBAGe9oh5woVr3lu3AeREERRPmD778jQMODrzkRfg4w7Zi1M+ozc9CW5Lim4SEBBFW6Q0ZKHiBgOBwE8pmXhOE1/4b4TsSX1+ZYlw/f1KJ/Doyf4YSKwzVGEdjTldkdS/lbivyQPaNIsxj4ggvb4u1CtbuK3vLbz6wSJwugR9g6TL1kkXqXR9H6xcRrB/5EQf0u+1EnjLN/GvsqKw2mvVrG/Vp7kINdL5dPO44b8Emce+3xqudjVdYf1J2QI56iTowjwYEK2NMLEnklukjknSLQDrqYlpFb0sx8/oKKXf9xVFD243YpO1XejusnBjhcKePsMmaqtTCh8MOXsSTQ+g3vDQeHxgc7LyqE/DtXwAt2Nmft5i2MJAiV1C8dszUjvdG0ItC9AYUxdQInTbakZGpO9lfldZKLOpuBfpMmYjosMX3Bylh5qUHtwPB6V+p2nMdGbKNFshf1v7Di6P/9oNGA/ZKCI4Cr8P/3/RJuAr8TQVDJyWE1UCRsrBeEDEoZzOm8mjDSYUVQC3/l9PkoCyZBMC3ynQWysYwNN+ThHNmCplKb6KFVFLfvVPHe3CkYDWCij8Ah8mHyyUkLeGRHU4YI3ssA8YLBsz2seUpJTi66EmJ9/X3qH2rWQ8yV3r3z0x8otWS8KXuh8JG6s9Rbjpx4koT3nWxAPW/xwrQcrUma4FMJcB6UJQIgU0saTe0xc1Wa64UXejfFvhXhPUgBgh8F3IRUeEghk4T8kRjv11pDDyeNgS1DpjBnqQ0IFh+uOrY6CUhNxF3AOYg0vjaujoedtaAtlDwJ78SI9UG1YfCG8ZQcrUU043NHNeBPXMoSD5YCKB64rhBUjF0hMzhi9TJi+lAm4l37EYPWejsFggpd1XhoOWxGdZIyZL7NPJO8LT5OAEwI2ky90KGNoH9dOsxWybS+A+YJizCfTrsxNhZ+bmgKqqY1yKqhF8UvY7abEVPVUxwoOvEcF0FSFIblSYB6vHzooATK1uwJufo46PxjTZXBXKfNd3RYl8uKh4YxkhIzV6d5Z9NzWZDoKl0PEmpSZTzr8qwEvcFvRLY0CoXKwUlkrEPAt6PzHP7EfwjEQfOWSKI0f7YgirTrrcUDCLrCDp2ByvIOpD6U0PCfz3yfKWtxhKGKAOu2sUE17MrHdmOmQ8Kc9R5AHiElStgJQnLkLLK0L/HVSwHIp7P9pI0RaeVafNh0l/Y+govRh+ZpHcqlfOL1rHcEc+CTVx2aB1WSp68UnQNR1MEVCP+aFoqpxpPSsokuDL/XUCFZbidfv6QB2BHRvWICx4jRNswO2iEG6qpRl+ox9Qqx0jy/Zp5R3T4io6M8EV7tNlELs5RiZ/vz1JFOnD2Cy3i3PHu0tqnwmcW3aR4qGp3e8GCqm+WzG/HQNw8L5uj+oiV0qICfkPtM+N5YvMnWCamTWZUo7JY6/9nOVFN97zISwyxFyB0/Fs67EuOU7CjW4WH02Meg7P/FucjrYjj1nNPn0ZQI20AvvhSqOVGjJdnkQsSOFOf4Xl9h8SRjZOdKyAo7hbBv/EPjVLiYEvstxTIXvrJtXtjHQvpXZAahJ/KEcWoxAmz+Fos89bXyZYlv9QOX3Rk31MTNx1e9myYJ6rMJqALpgMend+in7mcBBKdP8HK3aPvP7pyeX9pmHqgqznGsQya7OksVtc1Wh/2E2ZfkTQNDYzy4Gqp5b3mnrPzJKc7FREA7byhhaxtXJ5ho2VYtms60gxkNGONt5xJLAwuWsGHDiZlWG3gOA5DEjX4/uw8dksx/z1T7ly1/WsPSvUBeDJePM7Eq8LFYyGvPoCHX37NqX9sAinD7RXs+rzk9FA7hR5JyYzA4NHyNw58gu4yajvFeF6Zj8mq06dySURoZqkx4aWSJ5+9CTH0vkRa8ufqy0jjNE/illfH2I7PXsgomYo5UeAIgA6KF5vRvCSM2Qi2V9g7cvN4ss+4EM0sWDu1C7k09bLbxricGwT+CzIS15G8XYQJgUg4mDTp3NzvshbDuj7PVDkA/EuD26/IWeJhY24nKTut+UsKZhyDWA3rnsJZ9/xh8+vS6Qo5qZyj3hfWcV3KujEeJCVFdo/3UM6oy54jWkJqzJFC3SO1tbDF0RXLM/cbNRlcFaprTFcLPB7b1zGDZqLAq64ABV9oIT8+3VwlerzC+WIXzWwwM8xujB3367Ja4TGr977ZbfBZ5XeFWh+iITJKMGsk9ZUlb375ShwlsLSmk3Dma0eS2RmpSTqRW1SBVDgKPi52P9uW5nNypaMi84Ik7nYz7FxBjzTwSLxP+XDBL1OC67NDd7QpHuGm2A1xfX9eEK8C5R0lGKMA3Bvc5RNcAJ1jAloYXNfZ2F1c3OUSwCMBWdhdXNzlEcAAAAAAAAAAHVijAZfc2hhcGWUSwKFlHViLg==",
57
+ "dtype": "float32",
58
+ "low": "[-1. -1.]",
59
+ "high": "[1. 1.]",
60
+ "bounded_below": "[ True True]",
61
+ "bounded_above": "[ True True]",
62
+ "_np_random": "RandomState(MT19937)",
63
+ "_shape": [
64
+ 2
65
+ ]
66
+ },
67
+ "n_envs": 8,
68
+ "num_timesteps": 1003520,
69
+ "_total_timesteps": 1000000,
70
+ "_num_timesteps_at_start": 0,
71
+ "seed": 0,
72
+ "action_noise": null,
73
+ "start_time": 1614939461.187274,
74
+ "learning_rate": {
75
+ ":type:": "<class 'function'>",
76
+ ":serialized:": "gASV2QIAAAAAAACMF2Nsb3VkcGlja2xlLmNsb3VkcGlja2xllIwNX2J1aWx0aW5fdHlwZZSTlIwKTGFtYmRhVHlwZZSFlFKUKGgCjAhDb2RlVHlwZZSFlFKUKEsBSwBLAUsBSxNDBIgAUwCUToWUKYwBX5SFlIxVL3ZvbHVtZS9VU0VSU1RPUkUvcmFmZl9hbi9wcm9qZWN0cy90b3JjaHktYmFzZWxpbmVzL3N0YWJsZV9iYXNlbGluZXMzL2NvbW1vbi91dGlscy5weZSMBGZ1bmOUS31DAgABlIwDdmFslIWUKXSUUpR9lCiMC19fcGFja2FnZV9flIwYc3RhYmxlX2Jhc2VsaW5lczMuY29tbW9ulIwIX19uYW1lX1+UjB5zdGFibGVfYmFzZWxpbmVzMy5jb21tb24udXRpbHOUjAhfX2ZpbGVfX5SMVS92b2x1bWUvVVNFUlNUT1JFL3JhZmZfYW4vcHJvamVjdHMvdG9yY2h5LWJhc2VsaW5lcy9zdGFibGVfYmFzZWxpbmVzMy9jb21tb24vdXRpbHMucHmUdU5OaACMEF9tYWtlX2VtcHR5X2NlbGyUk5QpUpSFlHSUUpSMHGNsb3VkcGlja2xlLmNsb3VkcGlja2xlX2Zhc3SUjBJfZnVuY3Rpb25fc2V0c3RhdGWUk5RoIH2UfZQoaBdoDowMX19xdWFsbmFtZV9flIwZY29uc3RhbnRfZm4uPGxvY2Fscz4uZnVuY5SMD19fYW5ub3RhdGlvbnNfX5R9lIwOX19rd2RlZmF1bHRzX1+UTowMX19kZWZhdWx0c19flE6MCl9fbW9kdWxlX1+UaBiMB19fZG9jX1+UTowLX19jbG9zdXJlX1+UaACMCl9tYWtlX2NlbGyUk5RHPv91EE1VHWmFlFKUhZSMF19jbG91ZHBpY2tsZV9zdWJtb2R1bGVzlF2UjAtfX2dsb2JhbHNfX5R9lHWGlIZSMC4="
77
+ },
78
+ "tensorboard_log": null,
79
+ "lr_schedule": {
80
+ ":type:": "<class 'function'>",
81
+ ":serialized:": "gASV2QIAAAAAAACMF2Nsb3VkcGlja2xlLmNsb3VkcGlja2xllIwNX2J1aWx0aW5fdHlwZZSTlIwKTGFtYmRhVHlwZZSFlFKUKGgCjAhDb2RlVHlwZZSFlFKUKEsBSwBLAUsBSxNDBIgAUwCUToWUKYwBX5SFlIxVL3ZvbHVtZS9VU0VSU1RPUkUvcmFmZl9hbi9wcm9qZWN0cy90b3JjaHktYmFzZWxpbmVzL3N0YWJsZV9iYXNlbGluZXMzL2NvbW1vbi91dGlscy5weZSMBGZ1bmOUS31DAgABlIwDdmFslIWUKXSUUpR9lCiMC19fcGFja2FnZV9flIwYc3RhYmxlX2Jhc2VsaW5lczMuY29tbW9ulIwIX19uYW1lX1+UjB5zdGFibGVfYmFzZWxpbmVzMy5jb21tb24udXRpbHOUjAhfX2ZpbGVfX5SMVS92b2x1bWUvVVNFUlNUT1JFL3JhZmZfYW4vcHJvamVjdHMvdG9yY2h5LWJhc2VsaW5lcy9zdGFibGVfYmFzZWxpbmVzMy9jb21tb24vdXRpbHMucHmUdU5OaACMEF9tYWtlX2VtcHR5X2NlbGyUk5QpUpSFlHSUUpSMHGNsb3VkcGlja2xlLmNsb3VkcGlja2xlX2Zhc3SUjBJfZnVuY3Rpb25fc2V0c3RhdGWUk5RoIH2UfZQoaBdoDowMX19xdWFsbmFtZV9flIwZY29uc3RhbnRfZm4uPGxvY2Fscz4uZnVuY5SMD19fYW5ub3RhdGlvbnNfX5R9lIwOX19rd2RlZmF1bHRzX1+UTowMX19kZWZhdWx0c19flE6MCl9fbW9kdWxlX1+UaBiMB19fZG9jX1+UTowLX19jbG9zdXJlX1+UaACMCl9tYWtlX2NlbGyUk5RHPv91EE1VHWmFlFKUhZSMF19jbG91ZHBpY2tsZV9zdWJtb2R1bGVzlF2UjAtfX2dsb2JhbHNfX5R9lHWGlIZSMC4="
82
+ },
83
+ "_last_obs": null,
84
+ "_last_episode_starts": null,
85
+ "_last_original_obs": {
86
+ ":type:": "<class 'numpy.ndarray'>",
87
+ ":serialized:": "gASVzQEAAAAAAACMFW51bXB5LmNvcmUubXVsdGlhcnJheZSMDF9yZWNvbnN0cnVjdJSTlIwFbnVtcHmUjAduZGFycmF5lJOUSwCFlEMBYpSHlFKUKEsBSwhLCoaUaAOMBWR0eXBllJOUjAJmNJSJiIeUUpQoSwOMATyUTk5OSv////9K/////0sAdJRiiUJAAQAA8yxCvVbNe74an5Q91+WVPkc7Br9q/Fk/AAAAAMceYb8AAAAAAACAP9pWzj16NHq+JWmGvoeC5z04T08/IjIWvwAAAABhlqu9AAAAAAAAgD+6KLc9S2ZlvqzRar5OHIs9k6kwPxtGOb8AAAAAggQovQAAAAAAAIA/Hwi6vQNvYz3qROY9FiW+vaL+fz8yh9M7AAAAAJ25aT8AAAAAAACAP+e33D3lIb46bF15vl63Ib41AW8/LHG3vgAAAAC1XeE9AAAAAAAAgD8sq3M8SYM9PeNWIL0Zy4e9AOp/vz8/1DwAAAAAyrdzPwAAAAAAAIA/Yh5sPvINfL6P64e+S22lPrPAZT861OG+AAAAAJPbRT8AAAAAAACAPxNGaD7XysK970yTvmxsAT57bpq69P9/vwAAAACV/1M/AAAAAAAAgD+UdJRiLg=="
88
+ },
89
+ "_episode_num": 0,
90
+ "use_sde": true,
91
+ "sde_sample_freq": 4,
92
+ "_current_progress_remaining": -0.0035199999999999676,
93
+ "ep_info_buffer": {
94
+ ":type:": "<class 'collections.deque'>",
95
+ ":serialized:": "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"
96
+ },
97
+ "ep_success_buffer": {
98
+ ":type:": "<class 'collections.deque'>",
99
+ ":serialized:": "gASVIAAAAAAAAACMC2NvbGxlY3Rpb25zlIwFZGVxdWWUk5QpS2SGlFKULg=="
100
+ },
101
+ "_n_updates": 4900,
102
+ "n_steps": 512,
103
+ "gamma": 0.99,
104
+ "gae_lambda": 0.9,
105
+ "ent_coef": 0.0,
106
+ "vf_coef": 0.5,
107
+ "max_grad_norm": 0.5,
108
+ "batch_size": 64,
109
+ "n_epochs": 20,
110
+ "clip_range": {
111
+ ":type:": "<class 'function'>",
112
+ ":serialized:": "gASVngMAAAAAAACMF2Nsb3VkcGlja2xlLmNsb3VkcGlja2xllIwNX2J1aWx0aW5fdHlwZZSTlIwKTGFtYmRhVHlwZZSFlFKUKGgCjAhDb2RlVHlwZZSFlFKUKEsBSwBLAUsCSxNDCHwAiAAUAFMAlIyECiAgICAgICAgUHJvZ3Jlc3Mgd2lsbCBkZWNyZWFzZSBmcm9tIDEgKGJlZ2lubmluZykgdG8gMAogICAgICAgIDpwYXJhbSBwcm9ncmVzc19yZW1haW5pbmc6IChmbG9hdCkKICAgICAgICA6cmV0dXJuOiAoZmxvYXQpCiAgICAgICAglIWUKYwScHJvZ3Jlc3NfcmVtYWluaW5nlIWUjFovdm9sdW1lL1VTRVJTVE9SRS9yYWZmX2FuL3Byb2plY3RzL2V4cGVyaW1lbnRzL3JlbGVhc2UxLjAvcmwtYmFzZWxpbmVzMy16b28vdXRpbHMvdXRpbHMucHmUjARmdW5jlEv+QwIABpSMDWluaXRpYWxfdmFsdWWUhZQpdJRSlH2UKIwLX19wYWNrYWdlX1+UjAV1dGlsc5SMCF9fbmFtZV9flIwLdXRpbHMudXRpbHOUjAhfX2ZpbGVfX5SMWi92b2x1bWUvVVNFUlNUT1JFL3JhZmZfYW4vcHJvamVjdHMvZXhwZXJpbWVudHMvcmVsZWFzZTEuMC9ybC1iYXNlbGluZXMzLXpvby91dGlscy91dGlscy5weZR1Tk5oAIwQX21ha2VfZW1wdHlfY2VsbJSTlClSlIWUdJRSlIwcY2xvdWRwaWNrbGUuY2xvdWRwaWNrbGVfZmFzdJSMEl9mdW5jdGlvbl9zZXRzdGF0ZZSTlGghfZR9lChoGGgPjAxfX3F1YWxuYW1lX1+UjB1saW5lYXJfc2NoZWR1bGUuPGxvY2Fscz4uZnVuY5SMD19fYW5ub3RhdGlvbnNfX5R9lCiMEnByb2dyZXNzX3JlbWFpbmluZ5SMCGJ1aWx0aW5zlIwFZmxvYXSUk5SMBnJldHVybpRoLnWMDl9fa3dkZWZhdWx0c19flE6MDF9fZGVmYXVsdHNfX5ROjApfX21vZHVsZV9flGgZjAdfX2RvY19flGgKjAtfX2Nsb3N1cmVfX5RoAIwKX21ha2VfY2VsbJSTlEc/2ZmZmZmZmoWUUpSFlIwXX2Nsb3VkcGlja2xlX3N1Ym1vZHVsZXOUXZSMC19fZ2xvYmFsc19flH2UdYaUhlIwLg=="
113
+ },
114
+ "clip_range_vf": null,
115
+ "normalize_advantage": true,
116
+ "target_kl": null,
117
+ "_last_dones": {
118
+ ":type:": "<class 'numpy.ndarray'>",
119
+ ":serialized:": "gASVkAAAAAAAAACMFW51bXB5LmNvcmUubXVsdGlhcnJheZSMDF9yZWNvbnN0cnVjdJSTlIwFbnVtcHmUjAduZGFycmF5lJOUSwCFlEMBYpSHlFKUKEsBSwiFlGgDjAVkdHlwZZSTlIwCYjGUiYiHlFKUKEsDjAF8lE5OTkr/////Sv////9LAHSUYolDCAAAAAAAAAAAlHSUYi4="
120
+ }
121
+ }
ppo-ReacherBulletEnv-v0/policy.optimizer.pth ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:66f16a78a2ad876d8ce815d49c11ce1a4c2345da9003e55855dab324aa403b6a
3
+ size 1115031
ppo-ReacherBulletEnv-v0/policy.pth ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:43ca4dca0c6ba5b7eab4479fce223c552a12adbd58c144f766ddc92fe8df8ed3
3
+ size 558334
ppo-ReacherBulletEnv-v0/pytorch_variables.pth ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:d030ad8db708280fcae77d87e973102039acd23a11bdecc3db8eb6c0ac940ee1
3
+ size 431
ppo-ReacherBulletEnv-v0/system_info.txt ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ OS: Linux-5.13.0-44-generic-x86_64-with-debian-bullseye-sid #49~20.04.1-Ubuntu SMP Wed May 18 18:44:28 UTC 2022
2
+ Python: 3.7.10
3
+ Stable-Baselines3: 1.5.1a8
4
+ PyTorch: 1.11.0
5
+ GPU Enabled: True
6
+ Numpy: 1.21.2
7
+ Gym: 0.21.0
replay.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:7127cbe01bbb2b965e1fb0b594403d6b32ab02cd415518a2d365b59f2b8c435a
3
+ size 64085
results.json ADDED
@@ -0,0 +1 @@
 
 
1
+ {"mean_reward": 19.1159567, "std_reward": 9.532781691509756, "is_deterministic": true, "n_eval_episodes": 10, "eval_datetime": "2022-06-02T14:01:30.470774"}
train_eval_metrics.zip ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:5320d186fd350a0fa1ee42af18df2f1314ec887a645ea26c71b7dd291d666dae
3
+ size 193794
vec_normalize.pkl ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:33c26363be6c6447dd2a1edb5349c8cccd4bbddb5a03655a70addac84eff9a32
3
+ size 4864