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.
Indeed, as a workaround, you can:
- First retrieve your jobID: https://docs.edgeimpulse.com/reference/listfinishedjobs
- Get the job logs: https://docs.edgeimpulse.com/reference/getjobslogs
You’ll get an output looking like this (so you’ll need to parse it):
{
"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"
}
]
}
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
@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: