Save finalized training progress plots using OutputFcn

Hi,
i currently using the OutputFcn to save the finalised training progress as a figure, however i noticed that the saved figure are not the finalised result of the training progress instead it is the figure before reaching the finalised training with the validation accauracy. The result that i obtained is as followed.
Obtained figure:
Desired Figure (with validation accuracy):
Attached is also the code that i'm using in the live editor.
options = trainingOptions('sgdm', ...
'MiniBatchSize',miniBatchSize, ...
'MaxEpochs',2, ...
'InitialLearnRate',1e-4, ...
'Shuffle','every-epoch', ...
'ValidationData',augimdsValidation, ...
'ValidationFrequency',valFrequency, ...
'Verbose',false, ...
'Plots','training-progress', ...
'OutputFcn',@(info)SaveTrainingPlot(info));
% ... Training code ...
% At the end of the script
function stop = SaveTrainingPlot(info)
stop = false;
if info.State == "done"
currentfig = findall(groot,'Type','Figure');
savefig(currentfig,'test.fig')
end
end
The problem seem to be related to info.State == "Done", but is there any workaround to save the desired output as figure/image?

 Respuesta aceptada

I think that the final training plot is updated after exiting the function mentioned for the 'OutputFcn' argument. You can check it yourself by inserting pause(10) in the function and observe that the trianing progress plot updation will also pause for 10 seconds.
As you are interested in the final training progress plot, instead of placing the commands findall and savefig inside 'OutputFcn' function just place them after the trainNetwork function.
[net,info] = trainNetwork(___)
currentfig = findall(groot, 'Tag', 'NNET_CNN_TRAININGPLOT_UIFIGURE');
savefig(currentfig,'test.fig');

4 comentarios

Teo
Teo el 28 de Mayo de 2021
Hi Srivardhan,
Thanks for the work around. I am so thankful for your suggestion. It work like the one i desired. Thanks again.
Teo
Teo el 28 de Mayo de 2021
The code does work but there is an issue with the save figure where both of the line are same color compared to the orginal figure which have lighter color line for both training accuracy and loss (not smoothed). Below is the screen capture for your reference. Hope you are able to advice me on this.
Original Training plot
Saved Figure (Both line are same in color)
Thank You.
I have the same problem with the "fig" image, but thinking of a solution, I decided to copy the screen and save it as a "png" image. Maybe this helps other people.
currentfig = findall(groot, 'Tag', 'NNET_CNN_TRAININGPLOT_UIFIGURE');
img = screencapture(0, 'Position', currentfig(1,1).Position);
imwrite(img,"TrainingProgress.png");
Screen capture function:
https://www.mathworks.com/matlabcentral/fileexchange/24323-screencapture-screenshot-of-component-figure-or-screen

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Deep Learning Toolbox en Centro de ayuda y File Exchange.

Preguntada:

Teo
el 16 de Mayo de 2021

Comentada:

el 6 de Oct. de 2022

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by