Save finalized training progress plots using OutputFcn

조회 수: 126(최근 30일)
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', ...
% ... Training code ...
% At the end of the script
function stop = SaveTrainingPlot(info)
stop = false;
if info.State == "done"
currentfig = findall(groot,'Type','Figure');
The problem seem to be related to info.State == "Done", but is there any workaround to save the desired output as figure/image?

채택된 답변

Srivardhan Gadila
Srivardhan Gadila 2021년 5월 23일
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');
  댓글 수: 4
Michael Alvarez
Michael Alvarez 2022년 10월 6일
Screen capture function:

댓글을 달려면 로그인하십시오.

추가 답변(0개)

Community Treasure Hunt

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

Start Hunting!

Translated by