Plotting Loss vs Epoch

Hi members, could someone direct me on how I can plot the loss vs epoch, accuracy vs epoch in Edge Implulse? I am new here but i have trained my model so the only pending thing is plotting

Hello @Kimutai,

We’ve been talking intenally about this display for a while.
I think it would be super useful too especially to be able to adapt the number of epoch for my future trainings.
I don’t have the status but I’m creating an internal ticket for a feature request.

Regards,

Louis

@louis is it possible to get access to the training history using EI API? Can be an in-between solution.

@Joeri,

Indeed, as a workaround, you can:

{
  "success": true,
  "stdout": [
    {
      "created": "2021-12-29T14:46:48.926Z",
      "data": "Model training complete\n"
    },
    {
      "created": "2021-12-29T14:46:48.926Z",
      "data": "\n"
    },
    {
      "created": "2021-12-29T14:46:46.985Z",
      "data": "Profiling float32 model...\n"
    },
    {
      "created": "2021-12-29T14:46:46.985Z",
      "data": "Calculating performance metrics...\n"
    },
    {
      "created": "2021-12-29T14:46:26.422Z",
      "data": "Converting TensorFlow Lite int8 quantized model with int8 input and float32 output...\n"
    },
    {
      "created": "2021-12-29T14:46:12.188Z",
      "data": "Converting TensorFlow Lite float32 model...\n"
    },
    {
      "created": "2021-12-29T14:46:02.582Z",
      "data": "Loading for conversion...\n"
    },
    {
      "created": "2021-12-29T14:46:02.582Z",
      "data": "Finished creating SavedModel\n"
    },
    {
      "created": "2021-12-29T14:45:26.903Z",
      "data": "Creating SavedModel for conversion...\n"
    },
    {
      "created": "2021-12-29T14:45:26.903Z",
      "data": "Finished training\n"
    },
    {
      "created": "2021-12-29T14:45:25.998Z",
      "data": "Checkpoint saved\n"
    },
    {
      "created": "2021-12-29T14:45:25.879Z",
      "data": "Finished fine tuning\n"
    },
    {
      "created": "2021-12-29T14:45:25.874Z",
      "data": "Epoch 25 of 25, loss=0.17397588, val_loss=0.2801008\n"
    },
    {
      "created": "2021-12-29T14:45:19.907Z",
      "data": "Epoch 24 of 25, loss=0.16310924, val_loss=0.24756706\n"
    },
    {
      "created": "2021-12-29T14:45:13.782Z",
      "data": "Epoch 23 of 25, loss=0.18643948, val_loss=0.28963348\n"
    },
    {
      "created": "2021-12-29T14:45:07.607Z",
      "data": "Epoch 22 of 25, loss=0.1889432, val_loss=0.26956734\n"
    },
    {
      "created": "2021-12-29T14:45:01.463Z",
      "data": "Epoch 21 of 25, loss=0.21289647, val_loss=0.3002076\n"
    },
    {
      "created": "2021-12-29T14:44:55.314Z",
      "data": "Epoch 20 of 25, loss=0.19766665, val_loss=0.2951789\n"
    },
    {
      "created": "2021-12-29T14:44:49.272Z",
      "data": "Epoch 19 of 25, loss=0.1989521, val_loss=0.28604046\n"
    },
    {
      "created": "2021-12-29T14:44:43.191Z",
      "data": "Epoch 18 of 25, loss=0.21186915, val_loss=0.28531134\n"
    },
    {
      "created": "2021-12-29T14:44:37.182Z",
      "data": "Epoch 17 of 25, loss=0.21917656, val_loss=0.30099013\n"
    },
    {
      "created": "2021-12-29T14:44:31.069Z",
      "data": "Epoch 16 of 25, loss=0.21706381, val_loss=0.29896978\n"
    },
    {
      "created": "2021-12-29T14:44:25.020Z",
      "data": "Epoch 15 of 25, loss=0.21884929, val_loss=0.30379456\n"
    },
    {
      "created": "2021-12-29T14:44:18.899Z",
      "data": "Epoch 14 of 25, loss=0.2231719, val_loss=0.2849868\n"
    },
    {
      "created": "2021-12-29T14:44:12.692Z",
      "data": "Epoch 13 of 25, loss=0.24951804, val_loss=0.33929378\n"
    },
    {
      "created": "2021-12-29T14:44:06.572Z",
      "data": "Epoch 12 of 25, loss=0.26759055, val_loss=0.3189029\n"
    },
    {
      "created": "2021-12-29T14:44:00.513Z",
      "data": "Epoch 11 of 25, loss=0.26884502, val_loss=0.36969146\n"
    },
    {
      "created": "2021-12-29T14:43:54.465Z",
      "data": "Epoch 10 of 25, loss=0.25644398, val_loss=0.3122458\n"
    },
    {
      "created": "2021-12-29T14:43:48.385Z",
      "data": "Epoch 9 of 25, loss=0.29775527, val_loss=0.38202137\n"
    },
    {
      "created": "2021-12-29T14:43:42.260Z",
      "data": "Epoch 8 of 25, loss=0.30108985, val_loss=0.34868544\n"
    },
    {
      "created": "2021-12-29T14:43:36.120Z",
      "data": "Epoch 7 of 25, loss=0.35760644, val_loss=0.4501624\n"
    },
    {
      "created": "2021-12-29T14:43:30.060Z",
      "data": "Epoch 6 of 25, loss=0.41666037, val_loss=0.40592366\n"
    },
    {
      "created": "2021-12-29T14:43:23.905Z",
      "data": "Epoch 5 of 25, loss=0.45926893, val_loss=0.50787544\n"
    },
    {
      "created": "2021-12-29T14:43:17.692Z",
      "data": "Epoch 4 of 25, loss=0.5640297, val_loss=0.5345783\n"
    },
    {
      "created": "2021-12-29T14:43:11.686Z",
      "data": "Epoch 3 of 25, loss=0.67096674, val_loss=0.6625219\n"
    },
    {
      "created": "2021-12-29T14:43:05.496Z",
      "data": "Epoch 2 of 25, loss=0.8854899, val_loss=0.8191457\n"
    },
    {
      "created": "2021-12-29T14:42:59.292Z",
      "data": "Epoch 1 of 25, loss=1.3179977, val_loss=1.1651382\n"
    },
    {
      "created": "2021-12-29T14:42:03.184Z",
      "data": "Fine tuning...\n"
    },
    {
      "created": "2021-12-29T14:42:03.180Z",
      "data": "Finished restoring weights\n"
    },
    {
      "created": "2021-12-29T14:42:01.356Z",
      "data": "Building model and restoring weights for fine-tuning...\n"
    },
    {
      "created": "2021-12-29T14:42:00.515Z",
      "data": "Training model...\n"
    },
    {
      "created": "2021-12-29T14:42:00.515Z",
      "data": "Training on 80 inputs, validating on 20 inputs\n"
    },
    {
      "created": "2021-12-29T14:42:00.398Z",
      "data": "Splitting data into training and validation sets OK\n"
    },
    {
      "created": "2021-12-29T14:41:59.595Z",
      "data": "Splitting data into training and validation sets...\n"
    },
    {
      "created": "2021-12-29T14:41:53.146Z",
      "data": "Copying features from processing blocks OK\n\n"
    },
    {
      "created": "2021-12-29T14:41:53.058Z",
      "data": "Copying features from DSP block OK\n"
    },
    {
      "created": "2021-12-29T14:41:51.844Z",
      "data": "Copying features from DSP block...\n"
    },
    {
      "created": "2021-12-29T14:41:51.658Z",
      "data": "Copying features from processing blocks...\n"
    }
  ]
}
2 Likes

@louis Indeed the job log is also a workaround solution.

Hi @Kimutai I’ve written about this a few times before already, see e.g.

for my reasoning on why we won’t add this.

For anyone finding this discussion: we’ve updated our docs page, so some of the links have changed.

Getting job ID: https://docs.edgeimpulse.com/reference/edge-impulse-api/jobs/list-finished-jobs
Getting job logs: https://docs.edgeimpulse.com/reference/edge-impulse-api/jobs/get-logs

1 Like

@Joeri and everyone else, if you have an enterprise project you have a jobs tab on the dashboard:

Which lists all jobs:

Also you can set up notifications for jobs if you have a long-running one: