(self, save_dir)
| 627 | |
| 628 | class MetricLogger: |
| 629 | def __init__(self, save_dir): |
| 630 | self.save_log = save_dir / "log" |
| 631 | with open(self.save_log, "w") as f: |
| 632 | f.write( |
| 633 | f"{'Episode':>8}{'Step':>8}{'Epsilon':>10}{'MeanReward':>15}" |
| 634 | f"{'MeanLength':>15}{'MeanLoss':>15}{'MeanQValue':>15}" |
| 635 | f"{'TimeDelta':>15}{'Time':>20}\n" |
| 636 | ) |
| 637 | self.ep_rewards_plot = save_dir / "reward_plot.jpg" |
| 638 | self.ep_lengths_plot = save_dir / "length_plot.jpg" |
| 639 | self.ep_avg_losses_plot = save_dir / "loss_plot.jpg" |
| 640 | self.ep_avg_qs_plot = save_dir / "q_plot.jpg" |
| 641 | |
| 642 | # History metrics |
| 643 | self.ep_rewards = [] |
| 644 | self.ep_lengths = [] |
| 645 | self.ep_avg_losses = [] |
| 646 | self.ep_avg_qs = [] |
| 647 | |
| 648 | # Moving averages, added for every call to record() |
| 649 | self.moving_avg_ep_rewards = [] |
| 650 | self.moving_avg_ep_lengths = [] |
| 651 | self.moving_avg_ep_avg_losses = [] |
| 652 | self.moving_avg_ep_avg_qs = [] |
| 653 | |
| 654 | # Current episode metric |
| 655 | self.init_episode() |
| 656 | |
| 657 | # Timing |
| 658 | self.record_time = time.time() |
| 659 | |
| 660 | def log_step(self, reward, loss, q): |
| 661 | self.curr_ep_reward += reward |
nothing calls this directly
no test coverage detected