Code generation of a trained reinforcement learning agent
12 views (last 30 days)
Show older comments
Hi,
i want to integrate a trained reinforcement learning agent to a microcontroller.
The training takes place in simulink.
For the codegeneration I am using this workaround: https://de.mathworks.com/matlabcentral/answers/757154-how-to-implement-reinforcement-learning-using-code-generation.
The microcontroller only has a single precision FPU.
How do I setup the agent, that the agent uses single precision and not double presicion, especially if the observations are also of the single data type?
0 Comments
Accepted Answer
Sayan Saha
on 7 Mar 2022
Hi Allmo,
Since you are targeting a micro-controller to deploy code you can generate plain C/C++ code from the trained RL agent following the approaches in https://www.mathworks.com/help/reinforcement-learning/ug/deploy-trained-reinforcement-learning-agents.html. You'll have to use the library-free deep learning configuration object to generate plain C/C++ code as mentioned in https://www.mathworks.com/help/coder/ug/generate-generic-cc-code-for-deep-learning-networks.html :
dlconfig = coder.DeepLearningConfig(TargetLibrary='none');
While the input data to the entry-point function can be of non-single type, the data will always be casted to single precision before invoking the inference method on the network. You can specify the input data to be of single precision so that generated code will only have single precision data without any typecasting.
https://www.mathworks.com/support/search.html/videos/generate-generic-c-c-code-for-deep-learning-networks-in-simulink-1622706081351.html?fq[]=asset_type_name:video&fq[]=category:simulink/index&page=1 will be helpful if you are planning to deploy from Simulink directly.
~Sayan
3 Comments
More Answers (0)
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!