antonioricciardi commited on
Commit
eba4bac
·
1 Parent(s): 7c68b47

First upload of a PPO Lunar Lander agent

Browse files
.gitattributes CHANGED
@@ -25,3 +25,4 @@ 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
README.md ADDED
@@ -0,0 +1,36 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ library_name: stable-baselines3
3
+ tags:
4
+ - FrozenLake-v1
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: 1.00 +/- 0.00
14
+ name: mean_reward
15
+ task:
16
+ type: reinforcement-learning
17
+ name: reinforcement-learning
18
+ dataset:
19
+ name: FrozenLake-v1
20
+ type: FrozenLake-v1
21
+ ---
22
+
23
+ # **PPO** Agent playing **FrozenLake-v1**
24
+ This is a trained model of a **PPO** agent playing **FrozenLake-v1**
25
+ using the [stable-baselines3 library](https://github.com/DLR-RM/stable-baselines3).
26
+
27
+ ## Usage (with Stable-baselines3)
28
+ TODO: Add your code
29
+
30
+
31
+ ```python
32
+ from stable_baselines3 import ...
33
+ from huggingface_sb3 import load_from_hub
34
+
35
+ ...
36
+ ```
config.json ADDED
@@ -0,0 +1 @@
 
 
1
+ {"policy_class": {":type:": "<class 'abc.ABCMeta'>", ":serialized:": "gAWVOwAAAAAAAACMIXN0YWJsZV9iYXNlbGluZXMzLmNvbW1vbi5wb2xpY2llc5SMEUFjdG9yQ3JpdGljUG9saWN5lJOULg==", "__module__": "stable_baselines3.common.policies", "__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 ", "__init__": "<function ActorCriticPolicy.__init__ at 0x13ef5e040>", "_get_constructor_parameters": "<function ActorCriticPolicy._get_constructor_parameters at 0x13ef5e0d0>", "reset_noise": "<function ActorCriticPolicy.reset_noise at 0x13ef5e160>", "_build_mlp_extractor": "<function ActorCriticPolicy._build_mlp_extractor at 0x13ef5e1f0>", "_build": "<function ActorCriticPolicy._build at 0x13ef5e280>", "forward": "<function ActorCriticPolicy.forward at 0x13ef5e310>", "_get_action_dist_from_latent": "<function ActorCriticPolicy._get_action_dist_from_latent at 0x13ef5e3a0>", "_predict": "<function ActorCriticPolicy._predict at 0x13ef5e430>", "evaluate_actions": "<function ActorCriticPolicy.evaluate_actions at 0x13ef5e4c0>", "get_distribution": "<function ActorCriticPolicy.get_distribution at 0x13ef5e550>", "predict_values": "<function ActorCriticPolicy.predict_values at 0x13ef5e5e0>", "__abstractmethods__": "frozenset()", "_abc_impl": "<_abc_data object at 0x13ef52db0>"}, "verbose": 1, "policy_kwargs": {}, "observation_space": {":type:": "<class 'gym.spaces.discrete.Discrete'>", ":serialized:": "gAWVggAAAAAAAACME2d5bS5zcGFjZXMuZGlzY3JldGWUjAhEaXNjcmV0ZZSTlCmBlH2UKIwBbpRLEIwGX3NoYXBllCmMBWR0eXBllIwFbnVtcHmUaAeTlIwCaTiUiYiHlFKUKEsDjAE8lE5OTkr/////Sv////9LAHSUYowKX25wX3JhbmRvbZROdWIu", "n": 16, "_shape": [], "dtype": "int64", "_np_random": null}, "action_space": {":type:": "<class 'gym.spaces.discrete.Discrete'>", ":serialized:": "gAWVggAAAAAAAACME2d5bS5zcGFjZXMuZGlzY3JldGWUjAhEaXNjcmV0ZZSTlCmBlH2UKIwBbpRLBIwGX3NoYXBllCmMBWR0eXBllIwFbnVtcHmUaAeTlIwCaTiUiYiHlFKUKEsDjAE8lE5OTkr/////Sv////9LAHSUYowKX25wX3JhbmRvbZROdWIu", "n": 4, "_shape": [], "dtype": "int64", "_np_random": null}, "n_envs": 16, "num_timesteps": 1212416, "_total_timesteps": 1200000, "_num_timesteps_at_start": 0, "seed": null, "action_noise": null, "start_time": 1654952727.909992, "learning_rate": 0.0009, "tensorboard_log": null, "lr_schedule": {":type:": "<class 'function'>", ":serialized:": "gAWVGwMAAAAAAACMF2Nsb3VkcGlja2xlLmNsb3VkcGlja2xllIwNX2J1aWx0aW5fdHlwZZSTlIwKTGFtYmRhVHlwZZSFlFKUKGgCjAhDb2RlVHlwZZSFlFKUKEsBSwBLAEsBSwFLE0MEiABTAJROhZQpjAFflIWUjHUvVXNlcnMvYW50b25pb3JpY2NpYXJkaS9QeWNoYXJtUHJvamVjdHMvaGZybGNvdXJzZS92ZW52L2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9zdGFibGVfYmFzZWxpbmVzMy9jb21tb24vdXRpbHMucHmUjARmdW5jlEuAQwIAAZSMA3ZhbJSFlCl0lFKUfZQojAtfX3BhY2thZ2VfX5SMGHN0YWJsZV9iYXNlbGluZXMzLmNvbW1vbpSMCF9fbmFtZV9flIwec3RhYmxlX2Jhc2VsaW5lczMuY29tbW9uLnV0aWxzlIwIX19maWxlX1+UjHUvVXNlcnMvYW50b25pb3JpY2NpYXJkaS9QeWNoYXJtUHJvamVjdHMvaGZybGNvdXJzZS92ZW52L2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9zdGFibGVfYmFzZWxpbmVzMy9jb21tb24vdXRpbHMucHmUdU5OaACMEF9tYWtlX2VtcHR5X2NlbGyUk5QpUpSFlHSUUpSMHGNsb3VkcGlja2xlLmNsb3VkcGlja2xlX2Zhc3SUjBJfZnVuY3Rpb25fc2V0c3RhdGWUk5RoIH2UfZQoaBdoDowMX19xdWFsbmFtZV9flIwZY29uc3RhbnRfZm4uPGxvY2Fscz4uZnVuY5SMD19fYW5ub3RhdGlvbnNfX5R9lIwOX19rd2RlZmF1bHRzX1+UTowMX19kZWZhdWx0c19flE6MCl9fbW9kdWxlX1+UaBiMB19fZG9jX1+UTowLX19jbG9zdXJlX1+UaACMCl9tYWtlX2NlbGyUk5RHP019v0h/y5KFlFKUhZSMF19jbG91ZHBpY2tsZV9zdWJtb2R1bGVzlF2UjAtfX2dsb2JhbHNfX5R9lHWGlIZSMC4="}, "_last_obs": {":type:": "<class 'numpy.ndarray'>", ":serialized:": "gAWV8wAAAAAAAACMEm51bXB5LmNvcmUubnVtZXJpY5SMC19mcm9tYnVmZmVylJOUKJaAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAkAAAAAAAAABAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACgAAAAAAAAAIAAAAAAAAAAkAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAlIwFbnVtcHmUjAVkdHlwZZSTlIwCaTiUiYiHlFKUKEsDjAE8lE5OTkr/////Sv////9LAHSUYksQhZSMAUOUdJRSlC4="}, "_last_episode_starts": {":type:": "<class 'numpy.ndarray'>", ":serialized:": "gAWVgwAAAAAAAACMEm51bXB5LmNvcmUubnVtZXJpY5SMC19mcm9tYnVmZmVylJOUKJYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACUjAVudW1weZSMBWR0eXBllJOUjAJiMZSJiIeUUpQoSwOMAXyUTk5OSv////9K/////0sAdJRiSxCFlIwBQ5R0lFKULg=="}, "_last_original_obs": null, "_episode_num": 0, "use_sde": false, "sde_sample_freq": -1, "_current_progress_remaining": -0.010346666666666726, "ep_info_buffer": {":type:": "<class 'collections.deque'>", ":serialized:": "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"}, "ep_success_buffer": {":type:": "<class 'collections.deque'>", ":serialized:": "gAWVIAAAAAAAAACMC2NvbGxlY3Rpb25zlIwFZGVxdWWUk5QpS2SGlFKULg=="}, "_n_updates": 296, "n_steps": 1024, "gamma": 0.999, "gae_lambda": 0.98, "ent_coef": 0.008, "vf_coef": 0.5, "max_grad_norm": 0.5, "batch_size": 64, "n_epochs": 4, "clip_range": {":type:": "<class 'function'>", ":serialized:": "gAWVGwMAAAAAAACMF2Nsb3VkcGlja2xlLmNsb3VkcGlja2xllIwNX2J1aWx0aW5fdHlwZZSTlIwKTGFtYmRhVHlwZZSFlFKUKGgCjAhDb2RlVHlwZZSFlFKUKEsBSwBLAEsBSwFLE0MEiABTAJROhZQpjAFflIWUjHUvVXNlcnMvYW50b25pb3JpY2NpYXJkaS9QeWNoYXJtUHJvamVjdHMvaGZybGNvdXJzZS92ZW52L2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9zdGFibGVfYmFzZWxpbmVzMy9jb21tb24vdXRpbHMucHmUjARmdW5jlEuAQwIAAZSMA3ZhbJSFlCl0lFKUfZQojAtfX3BhY2thZ2VfX5SMGHN0YWJsZV9iYXNlbGluZXMzLmNvbW1vbpSMCF9fbmFtZV9flIwec3RhYmxlX2Jhc2VsaW5lczMuY29tbW9uLnV0aWxzlIwIX19maWxlX1+UjHUvVXNlcnMvYW50b25pb3JpY2NpYXJkaS9QeWNoYXJtUHJvamVjdHMvaGZybGNvdXJzZS92ZW52L2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9zdGFibGVfYmFzZWxpbmVzMy9jb21tb24vdXRpbHMucHmUdU5OaACMEF9tYWtlX2VtcHR5X2NlbGyUk5QpUpSFlHSUUpSMHGNsb3VkcGlja2xlLmNsb3VkcGlja2xlX2Zhc3SUjBJfZnVuY3Rpb25fc2V0c3RhdGWUk5RoIH2UfZQoaBdoDowMX19xdWFsbmFtZV9flIwZY29uc3RhbnRfZm4uPGxvY2Fscz4uZnVuY5SMD19fYW5ub3RhdGlvbnNfX5R9lIwOX19rd2RlZmF1bHRzX1+UTowMX19kZWZhdWx0c19flE6MCl9fbW9kdWxlX1+UaBiMB19fZG9jX1+UTowLX19jbG9zdXJlX1+UaACMCl9tYWtlX2NlbGyUk5RHP8mZmZmZmZqFlFKUhZSMF19jbG91ZHBpY2tsZV9zdWJtb2R1bGVzlF2UjAtfX2dsb2JhbHNfX5R9lHWGlIZSMC4="}, "clip_range_vf": null, "normalize_advantage": true, "target_kl": null, "system_info": {"OS": "macOS-12.3.1-arm64-arm-64bit Darwin Kernel Version 21.4.0: Fri Mar 18 00:46:32 PDT 2022; root:xnu-8020.101.4~15/RELEASE_ARM64_T6000", "Python": "3.8.9", "Stable-Baselines3": "1.5.0", "PyTorch": "1.11.0", "GPU Enabled": "False", "Numpy": "1.22.4", "Gym": "0.21.0"}}
ppo-FrozenLake-v1.zip ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:e5d0d850381cdd6cadb0b584472662c58e9688c46661a7397352ea9e36141799
3
+ size 153530
ppo-FrozenLake-v1/_stable_baselines3_version ADDED
@@ -0,0 +1 @@
 
 
1
+ 1.5.0
ppo-FrozenLake-v1/data ADDED
@@ -0,0 +1,89 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "policy_class": {
3
+ ":type:": "<class 'abc.ABCMeta'>",
4
+ ":serialized:": "gAWVOwAAAAAAAACMIXN0YWJsZV9iYXNlbGluZXMzLmNvbW1vbi5wb2xpY2llc5SMEUFjdG9yQ3JpdGljUG9saWN5lJOULg==",
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 0x13ef5e040>",
8
+ "_get_constructor_parameters": "<function ActorCriticPolicy._get_constructor_parameters at 0x13ef5e0d0>",
9
+ "reset_noise": "<function ActorCriticPolicy.reset_noise at 0x13ef5e160>",
10
+ "_build_mlp_extractor": "<function ActorCriticPolicy._build_mlp_extractor at 0x13ef5e1f0>",
11
+ "_build": "<function ActorCriticPolicy._build at 0x13ef5e280>",
12
+ "forward": "<function ActorCriticPolicy.forward at 0x13ef5e310>",
13
+ "_get_action_dist_from_latent": "<function ActorCriticPolicy._get_action_dist_from_latent at 0x13ef5e3a0>",
14
+ "_predict": "<function ActorCriticPolicy._predict at 0x13ef5e430>",
15
+ "evaluate_actions": "<function ActorCriticPolicy.evaluate_actions at 0x13ef5e4c0>",
16
+ "get_distribution": "<function ActorCriticPolicy.get_distribution at 0x13ef5e550>",
17
+ "predict_values": "<function ActorCriticPolicy.predict_values at 0x13ef5e5e0>",
18
+ "__abstractmethods__": "frozenset()",
19
+ "_abc_impl": "<_abc_data object at 0x13ef52db0>"
20
+ },
21
+ "verbose": 1,
22
+ "policy_kwargs": {},
23
+ "observation_space": {
24
+ ":type:": "<class 'gym.spaces.discrete.Discrete'>",
25
+ ":serialized:": "gAWVggAAAAAAAACME2d5bS5zcGFjZXMuZGlzY3JldGWUjAhEaXNjcmV0ZZSTlCmBlH2UKIwBbpRLEIwGX3NoYXBllCmMBWR0eXBllIwFbnVtcHmUaAeTlIwCaTiUiYiHlFKUKEsDjAE8lE5OTkr/////Sv////9LAHSUYowKX25wX3JhbmRvbZROdWIu",
26
+ "n": 16,
27
+ "_shape": [],
28
+ "dtype": "int64",
29
+ "_np_random": null
30
+ },
31
+ "action_space": {
32
+ ":type:": "<class 'gym.spaces.discrete.Discrete'>",
33
+ ":serialized:": "gAWVggAAAAAAAACME2d5bS5zcGFjZXMuZGlzY3JldGWUjAhEaXNjcmV0ZZSTlCmBlH2UKIwBbpRLBIwGX3NoYXBllCmMBWR0eXBllIwFbnVtcHmUaAeTlIwCaTiUiYiHlFKUKEsDjAE8lE5OTkr/////Sv////9LAHSUYowKX25wX3JhbmRvbZROdWIu",
34
+ "n": 4,
35
+ "_shape": [],
36
+ "dtype": "int64",
37
+ "_np_random": null
38
+ },
39
+ "n_envs": 16,
40
+ "num_timesteps": 1212416,
41
+ "_total_timesteps": 1200000,
42
+ "_num_timesteps_at_start": 0,
43
+ "seed": null,
44
+ "action_noise": null,
45
+ "start_time": 1654952727.909992,
46
+ "learning_rate": 0.0009,
47
+ "tensorboard_log": null,
48
+ "lr_schedule": {
49
+ ":type:": "<class 'function'>",
50
+ ":serialized:": "gAWVGwMAAAAAAACMF2Nsb3VkcGlja2xlLmNsb3VkcGlja2xllIwNX2J1aWx0aW5fdHlwZZSTlIwKTGFtYmRhVHlwZZSFlFKUKGgCjAhDb2RlVHlwZZSFlFKUKEsBSwBLAEsBSwFLE0MEiABTAJROhZQpjAFflIWUjHUvVXNlcnMvYW50b25pb3JpY2NpYXJkaS9QeWNoYXJtUHJvamVjdHMvaGZybGNvdXJzZS92ZW52L2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9zdGFibGVfYmFzZWxpbmVzMy9jb21tb24vdXRpbHMucHmUjARmdW5jlEuAQwIAAZSMA3ZhbJSFlCl0lFKUfZQojAtfX3BhY2thZ2VfX5SMGHN0YWJsZV9iYXNlbGluZXMzLmNvbW1vbpSMCF9fbmFtZV9flIwec3RhYmxlX2Jhc2VsaW5lczMuY29tbW9uLnV0aWxzlIwIX19maWxlX1+UjHUvVXNlcnMvYW50b25pb3JpY2NpYXJkaS9QeWNoYXJtUHJvamVjdHMvaGZybGNvdXJzZS92ZW52L2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9zdGFibGVfYmFzZWxpbmVzMy9jb21tb24vdXRpbHMucHmUdU5OaACMEF9tYWtlX2VtcHR5X2NlbGyUk5QpUpSFlHSUUpSMHGNsb3VkcGlja2xlLmNsb3VkcGlja2xlX2Zhc3SUjBJfZnVuY3Rpb25fc2V0c3RhdGWUk5RoIH2UfZQoaBdoDowMX19xdWFsbmFtZV9flIwZY29uc3RhbnRfZm4uPGxvY2Fscz4uZnVuY5SMD19fYW5ub3RhdGlvbnNfX5R9lIwOX19rd2RlZmF1bHRzX1+UTowMX19kZWZhdWx0c19flE6MCl9fbW9kdWxlX1+UaBiMB19fZG9jX1+UTowLX19jbG9zdXJlX1+UaACMCl9tYWtlX2NlbGyUk5RHP019v0h/y5KFlFKUhZSMF19jbG91ZHBpY2tsZV9zdWJtb2R1bGVzlF2UjAtfX2dsb2JhbHNfX5R9lHWGlIZSMC4="
51
+ },
52
+ "_last_obs": {
53
+ ":type:": "<class 'numpy.ndarray'>",
54
+ ":serialized:": "gAWV8wAAAAAAAACMEm51bXB5LmNvcmUubnVtZXJpY5SMC19mcm9tYnVmZmVylJOUKJaAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAkAAAAAAAAABAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACgAAAAAAAAAIAAAAAAAAAAkAAAAAAAAACAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAlIwFbnVtcHmUjAVkdHlwZZSTlIwCaTiUiYiHlFKUKEsDjAE8lE5OTkr/////Sv////9LAHSUYksQhZSMAUOUdJRSlC4="
55
+ },
56
+ "_last_episode_starts": {
57
+ ":type:": "<class 'numpy.ndarray'>",
58
+ ":serialized:": "gAWVgwAAAAAAAACMEm51bXB5LmNvcmUubnVtZXJpY5SMC19mcm9tYnVmZmVylJOUKJYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACUjAVudW1weZSMBWR0eXBllJOUjAJiMZSJiIeUUpQoSwOMAXyUTk5OSv////9K/////0sAdJRiSxCFlIwBQ5R0lFKULg=="
59
+ },
60
+ "_last_original_obs": null,
61
+ "_episode_num": 0,
62
+ "use_sde": false,
63
+ "sde_sample_freq": -1,
64
+ "_current_progress_remaining": -0.010346666666666726,
65
+ "ep_info_buffer": {
66
+ ":type:": "<class 'collections.deque'>",
67
+ ":serialized:": "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"
68
+ },
69
+ "ep_success_buffer": {
70
+ ":type:": "<class 'collections.deque'>",
71
+ ":serialized:": "gAWVIAAAAAAAAACMC2NvbGxlY3Rpb25zlIwFZGVxdWWUk5QpS2SGlFKULg=="
72
+ },
73
+ "_n_updates": 296,
74
+ "n_steps": 1024,
75
+ "gamma": 0.999,
76
+ "gae_lambda": 0.98,
77
+ "ent_coef": 0.008,
78
+ "vf_coef": 0.5,
79
+ "max_grad_norm": 0.5,
80
+ "batch_size": 64,
81
+ "n_epochs": 4,
82
+ "clip_range": {
83
+ ":type:": "<class 'function'>",
84
+ ":serialized:": "gAWVGwMAAAAAAACMF2Nsb3VkcGlja2xlLmNsb3VkcGlja2xllIwNX2J1aWx0aW5fdHlwZZSTlIwKTGFtYmRhVHlwZZSFlFKUKGgCjAhDb2RlVHlwZZSFlFKUKEsBSwBLAEsBSwFLE0MEiABTAJROhZQpjAFflIWUjHUvVXNlcnMvYW50b25pb3JpY2NpYXJkaS9QeWNoYXJtUHJvamVjdHMvaGZybGNvdXJzZS92ZW52L2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9zdGFibGVfYmFzZWxpbmVzMy9jb21tb24vdXRpbHMucHmUjARmdW5jlEuAQwIAAZSMA3ZhbJSFlCl0lFKUfZQojAtfX3BhY2thZ2VfX5SMGHN0YWJsZV9iYXNlbGluZXMzLmNvbW1vbpSMCF9fbmFtZV9flIwec3RhYmxlX2Jhc2VsaW5lczMuY29tbW9uLnV0aWxzlIwIX19maWxlX1+UjHUvVXNlcnMvYW50b25pb3JpY2NpYXJkaS9QeWNoYXJtUHJvamVjdHMvaGZybGNvdXJzZS92ZW52L2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9zdGFibGVfYmFzZWxpbmVzMy9jb21tb24vdXRpbHMucHmUdU5OaACMEF9tYWtlX2VtcHR5X2NlbGyUk5QpUpSFlHSUUpSMHGNsb3VkcGlja2xlLmNsb3VkcGlja2xlX2Zhc3SUjBJfZnVuY3Rpb25fc2V0c3RhdGWUk5RoIH2UfZQoaBdoDowMX19xdWFsbmFtZV9flIwZY29uc3RhbnRfZm4uPGxvY2Fscz4uZnVuY5SMD19fYW5ub3RhdGlvbnNfX5R9lIwOX19rd2RlZmF1bHRzX1+UTowMX19kZWZhdWx0c19flE6MCl9fbW9kdWxlX1+UaBiMB19fZG9jX1+UTowLX19jbG9zdXJlX1+UaACMCl9tYWtlX2NlbGyUk5RHP8mZmZmZmZqFlFKUhZSMF19jbG91ZHBpY2tsZV9zdWJtb2R1bGVzlF2UjAtfX2dsb2JhbHNfX5R9lHWGlIZSMC4="
85
+ },
86
+ "clip_range_vf": null,
87
+ "normalize_advantage": true,
88
+ "target_kl": null
89
+ }
ppo-FrozenLake-v1/policy.optimizer.pth ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:856b9eb7b35de886a4a7257f138074122d24184fdea3798a33ba25c6338d9189
3
+ size 92829
ppo-FrozenLake-v1/policy.pth ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:5e6291bf8c7da0ccec18ebecec136f94a59bdaa23a0dfa42b0203098cea04841
3
+ size 47169
ppo-FrozenLake-v1/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-FrozenLake-v1/system_info.txt ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ OS: macOS-12.3.1-arm64-arm-64bit Darwin Kernel Version 21.4.0: Fri Mar 18 00:46:32 PDT 2022; root:xnu-8020.101.4~15/RELEASE_ARM64_T6000
2
+ Python: 3.8.9
3
+ Stable-Baselines3: 1.5.0
4
+ PyTorch: 1.11.0
5
+ GPU Enabled: False
6
+ Numpy: 1.22.4
7
+ Gym: 0.21.0
results.json ADDED
@@ -0,0 +1 @@
 
 
1
+ {"mean_reward": 1.0, "std_reward": 0.0, "is_deterministic": true, "n_eval_episodes": 10, "eval_datetime": "2022-06-11T15:06:56.184930"}