Skip to content

Commit 7fbc479

Browse files
committed
adjust struct of custom_logger and directory
1 parent 964b429 commit 7fbc479

File tree

3 files changed

+21
-14
lines changed

3 files changed

+21
-14
lines changed

README.md

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ Add our logger in your code of evaluation
2424

2525
```python
2626
from rl_plotter.logger import Logger
27-
logger = Logger(exp_name="your_exp_name", log_dir, env_name)
27+
logger = Logger(exp_name="your_exp_name", env_name, seed)
2828
····
2929
logger.update(score=evaluation_score_list, total_steps=current_training_steps)
3030
```
@@ -35,6 +35,15 @@ or you can use [OpenAI-baseline](https://github.com/openai/baselines) bench.Moni
3535
env = logger.monitor_env(env)
3636
```
3737

38+
if you want to track other variables:
39+
40+
```python
41+
custom_logger=logger.new_custom_logger(filename, fieldnames=["variable 1", "variable 2", ..., "variable n"])
42+
custom_logger.update(fieldvalues=variable_value_list, total_steps=current_training_steps)
43+
```
44+
45+
46+
3847
After the training or when you are training your agent, you can plot the learning curves in this way:
3948

4049
- switch to log directory (default: ./)

rl_plotter/logger.py

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,12 @@ def colorize(string, color, bold=False, highlight=False):
3636

3737
class Logger():
3838
def __init__(self, log_dir="./logs", exp_name=None, env_name=None, seed=0):
39+
self.exp_name = exp_name
40+
self.env_name = env_name
41+
self.seed = seed
42+
3943
num_exps = 0
40-
self.log_dir = f"./{log_dir}/{exp_name}_{env_name}_seed{seed}"
44+
self.log_dir = f"./{log_dir}/{exp_name.replace('-', '_')}_{env_name.replace('-', '_')}_seed{seed}"
4145
while True:
4246
if os.path.exists(f"{self.log_dir}-{str(num_exps)}/"):
4347
num_exps += 1
@@ -73,20 +77,15 @@ def update(self, score, total_steps):
7377
epinfo = {"mean_score": avg_score, "total_steps": total_steps, "std_score": std_score, "max_score": max_score, "min_score": max_score}
7478
self.logger.writerow(epinfo)
7579
self.csv_file.flush()
80+
81+
def new_custom_logger(self, filename=None, fieldnames=[]):
82+
custom_logger = CustomLogger(self.log_dir, self.exp_name, self.env_name, self.seed, filename, fieldnames)
83+
return custom_logger
7684

7785
class CustomLogger():
7886
def __init__(self, log_dir="./logs", exp_name=None, env_name=None, seed=0, filename="logger.csv", fieldnames=[]):
7987
self.fieldnames = ["total_steps"] + fieldnames
80-
num_exps = 0
81-
self.log_dir = f"./{log_dir}/{exp_name}_{env_name}_seed{seed}"
82-
while True:
83-
if os.path.exists(f"{self.log_dir}-{str(num_exps)}/"):
84-
num_exps += 1
85-
else:
86-
self.log_dir += f"-{str(num_exps)}/"
87-
os.makedirs(self.log_dir)
88-
break
89-
self.csv_file = open(self.log_dir + '/' + filename, 'w', encoding='utf8')
88+
self.csv_file = open(log_dir + '/' + filename, 'w', encoding='utf8')
9089
header={"t_start": time.time(), 'env_id' : env_name, 'exp_name': exp_name, 'seed': seed}
9190
header = '# {} \n'.format(json.dumps(header))
9291
self.csv_file.write(header)
@@ -95,7 +94,6 @@ def __init__(self, log_dir="./logs", exp_name=None, env_name=None, seed=0, filen
9594
self.csv_file.flush()
9695

9796
def update(self, fieldvalues, total_steps):
98-
9997
print(colorize(f"\nCustomLogger with fileds: {self.fieldnames}", 'yellow', bold=True))
10098
print(colorize(f"total_steps: {total_steps}, fieldvalues: {fieldvalues}\n", 'yellow', bold=True))
10199

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
setuptools.setup(
77
name="rl_plotter",
8-
version="2.2.2",
8+
version="2.2.3",
99
author="Gong Xiaoyu",
1010
author_email="[email protected]",
1111
description="A plotter for reinforcement learning (RL)",

0 commit comments

Comments
 (0)