Unable to save trainingstats in MATLAB 2024a

28 次查看(过去 30 天)
Vasu Sharma
Vasu Sharma 2024-8-14,21:50
回答: Aniket 2024-8-16,9:56
I am runnning a training script based on a simulink environment. At the end when I try to save the training results, it always throws an error. I am wondering if it has something to do with the .mat format. This issue does not occur in Matlab 2023a.
%% Train the agent
trainingStats = train(agent, env, trainOpts);
%% Save Agent
results_dir = strcat('./Results/',num2str(time(1)),'0',num2str(time(2)),num2str(time(3)));
mkdir(results_dir)
save(strcat(results_dir,'/TrainingStats.mat'),"trainingStats")
generatePolicyBlock(agent)
save_system('untitled','Agent')
%% Simulate
%addpath('D:\Masters\HiWi\Tikz')
simEpisodes = 1;
simOpts = rlSimulationOptions("MaxSteps",1250,...
"NumSimulations", simEpisodes);
experience = sim(env,agent,simOpts);
save(strcat(results_dir,'/Experience.mat'),"experience")
The error message is usually:
>> load('C:\Users\vasu3\Documents\Work\sharma_ma_rlonh2df\acados_implementation\rl\savedAgents\PPO\20240814\Agent5852.mat', 'savedAgentResult')
Error using load
Cannot read file
C:\Users\vasu3\Documents\Work\sharma_ma_rlonh2df\acados_implementation\rl\savedAgents\PPO\20240814\Agent5852.mat.
Warning: Directory already exists.
Error using save
Unable to save file
'C:\Users\vasu3\Documents\Work\sharma_ma_rlonh2df\acados_implementation\rl\Results\20240814\TrainingStats.mat'.
The file could not be closed, and might now be corrupt.
Error in run_H2DFRL_GRU (line 195)
save(strcat(results_dir,'/TrainingStats.mat'),"trainingStats")
Warning: Unable to read some of the variables due to unknown MAT-file error.
> In matfinfo (line 9)
In finfo>fetchDescriptions (line 278)
In finfo (line 82)
In uiimport/gatherFilePreviewData (line 419)
In uiimport (line 260)
Error using load
Unable to read file
'C:\Users\vasu3\Documents\Work\sharma_ma_rlonh2df\acados_implementation\rl\Results\20240814\TrainingStats.mat'. Input must be a
MAT-file or an ASCII file containing numeric data with same number of columns in each row.
Error in uiimport/runImportdata (line 470)
datastruct = load('-ascii', fileAbsolutePath);
Error in uiimport/gatherFilePreviewData (line 438)
[datastruct, textDelimiter, headerLines]= runImportdata(fileAbsolutePath, type);
Error in uiimport (line 260)
gatherFilePreviewData(fileAbsolutePath);
Could someone please help out

回答(1 个)

Aniket
Aniket 2024-8-16,9:56
I understand that there is an issue with saving training results in MATLAB, and it might be related to the file size limitations of the .mat format. The default version used for saving, version 7, has a size limit of 2GB per variable, which could be causing the error. You can switch to version 7.3 as it supports larger variable sizes.
Here's how you can modify the code to save the results using version 7.3:
save(strcat(results_dir, '/TrainingStats.mat'), "trainingStats", '-v7.3');
By specifying '-v7.3' in the save function, MATLAB is able to handle larger data sizes, which should help resolve this issue.
For more details, check out the MATLAB documentation on the ‘version’ argument of save function here:
Hope this helps!

类别

Help CenterFile Exchange 中查找有关 Sequence and Numeric Feature Data Workflows 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by