• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

freqtrade / freqtrade / 9394559170

26 Apr 2024 06:36AM UTC coverage: 94.656% (-0.02%) from 94.674%
9394559170

push

github

xmatthias
Loader should be passed as kwarg for clarity

20280 of 21425 relevant lines covered (94.66%)

0.95 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

92.68
/freqtrade/freqai/tensorboard/tensorboard.py
1
import logging
1✔
2
from pathlib import Path
1✔
3
from typing import Any
1✔
4

5
from torch.utils.tensorboard import SummaryWriter
1✔
6
from xgboost import callback
1✔
7

8
from freqtrade.freqai.tensorboard.base_tensorboard import (BaseTensorBoardCallback,
1✔
9
                                                           BaseTensorboardLogger)
10

11

12
logger = logging.getLogger(__name__)
1✔
13

14

15
class TensorboardLogger(BaseTensorboardLogger):
1✔
16
    def __init__(self, logdir: Path, activate: bool = True):
1✔
17
        self.activate = activate
1✔
18
        if self.activate:
1✔
19
            self.writer: SummaryWriter = SummaryWriter(f"{str(logdir)}/tensorboard")
1✔
20

21
    def log_scalar(self, tag: str, scalar_value: Any, step: int):
1✔
22
        if self.activate:
1✔
23
            self.writer.add_scalar(tag, scalar_value, step)
1✔
24

25
    def close(self):
1✔
26
        if self.activate:
1✔
27
            self.writer.flush()
1✔
28
            self.writer.close()
1✔
29

30

31
class TensorBoardCallback(BaseTensorBoardCallback):
1✔
32

33
    def __init__(self, logdir: Path, activate: bool = True):
1✔
34
        self.activate = activate
1✔
35
        if self.activate:
1✔
36
            self.writer: SummaryWriter = SummaryWriter(f"{str(logdir)}/tensorboard")
1✔
37

38
    def after_iteration(
1✔
39
        self, model, epoch: int, evals_log: callback.TrainingCallback.EvalsLog
40
    ) -> bool:
41
        if not self.activate:
1✔
42
            return False
×
43
        if not evals_log:
1✔
44
            return False
×
45

46
        evals = ["validation", "train"]
1✔
47
        for metric, eval in zip(evals_log.items(), evals):
1✔
48
            for metric_name, log in metric[1].items():
1✔
49
                score = log[-1][0] if isinstance(log[-1], tuple) else log[-1]
1✔
50
                self.writer.add_scalar(f"{eval}-{metric_name}", score, epoch)
1✔
51

52
        return False
1✔
53

54
    def after_training(self, model):
1✔
55
        if not self.activate:
1✔
56
            return model
×
57
        self.writer.flush()
1✔
58
        self.writer.close()
1✔
59

60
        return model
1✔
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc