tracel-ai / burn

Burn is a new comprehensive dynamic Deep Learning Framework built using Rust with extreme flexibility, compute efficiency and portability as its primary goals.
https://burn.dev
Apache License 2.0
8.89k stars 439 forks source link

Accuracy/Loss plots are buggy for multiple validation sets #1496

Open Saphereye opened 7 months ago

Saphereye commented 7 months ago

Describe the bug When utilizing the CLI tool, an anomaly occurs where, upon plotting the Accuracy and Loss data in a line plot, the plot contains extraneous lines connecting them when more than two sets are present.

To Reproduce Steps to reproduce the behavior:

  1. Create a repo for the Basic workflow example
  2. Run the program (with the CLI version) and Wgpu device.
  3. Wait for two or more validation set graphs

Expected behavior Although uncertain if this is intended functionality, the lines connecting validation data from distinct epochs should not occur.

Screenshots 28% progress Accuracy plot, two validation sets covered Screenshot from 2024-03-21 17-00-15

29% progress Loss plot after two validation sets Screenshot from 2024-03-21 17-00-40

37% progress Accuracy plot, three validation sets covered image

Desktop (please complete the following information):

Additional context I am following the Burn Basic workflow example for this example.

I believe the data for the plots is being updated here. A possible solution could be to draw new lines for each epoch.

Your dedication to investigating this matter is greatly appreciated. Thank you for your valuable contributions to this project.

louisfd commented 7 months ago

It's true that it's not very beautiful. If you have an idea of how to separate the blocks with a solution that is not too hacky, then maybe you can try and contribute? 😄

Saphereye commented 7 months ago

@louisfd beautiful graphs and data on TUIs are what I had envisioned when I had initially started with computers, and this visualisation method scratches that itch :heart:

I would love to contribute to the project!