培训钢筋学习代理后,您可以生成代码来部署最佳策略。您可以生成:
CUDA.®使用GPU编码器™的深神经网络策略代码
C / C ++代码表,深神经网络或线性基础函数策略使用马铃薯草®编码器™
只要支持所有使用的图层,使用任何输入路万博1manbetx径中的前馈神经网络都支持代理的代理支持代理。使用经常性神经网络(RNN)的连续动作PG,A万博1manbetxC,PPO和SAC代理不支持代码生成。
有关训练强化学习代理的更多信息,请参见火车加固学习代理.
要创建基于给定观察选择操作的策略评估函数,请使用generatePolicyFunction
命令。此命令生成一个MATLAB脚本,其中包含策略评估函数以及包含最佳策略数据的MAT文件。
您可以使用GPU编码器或其生成代码来部署此策略功能Matlab编码器.
如果您训练有素的最佳政策使用深度神经网络,您可以使用GPU编码器生成策略的CUDA代码。有关支持的GPU的更多信息,请参阅万博1manbetxGPU支万博1manbetx持情况(并行计算工具箱).对于生成深度神经网络CUDA代码,有几个必需的和推荐的先决条件产品。s manbetx 845有关更多信息,请参阅安装先决条件产品s manbetx 845(GPU编码器)和设置先决条件产品s manbetx 845(GPU编码器).
并非所有的深度神经网络层都支持GPU代码生成。万博1manbetx有关支持的图层列表,请参阅万博1manbetx万博1manbetx支持的网络、层和类(GPU编码器).有关GPU代码生成的更多信息和示例,请参阅基于GPU编码器的深度学习(GPU编码器).
以中训练的策略梯度代理为例,生成GPU代码训练PG代理平衡车杆系统.
装载训练有素的特工。
加载(“MATLABCartpolePG.mat”那'代理人'的)
为此代理创建策略评估功能。
generatePolicyFunction(代理)
此命令创建evaluatePolicy.m
文件,其中包含策略函数,以及AgentData.mat.
文件,包含培训的深神经网络演员。对于给定的观察,策略函数使用演员网络评估每个潜在动作的概率。然后,策略函数随机选择基于这些概率的动作。
你可以使用GPU编码器为这个网络生成代码。例如,可以生成一个CUDA兼容的MEX函数。
配置Codegen.
函数来创建一个CUDA兼容的c++ MEX函数。
cfg = coder.gpuconfig('mex');cfg.targetlang ='c ++';cfg。DeepLearningConfig =编码器。DeepLearningConfig (“cudnn”);
为策略评估功能设置示例输入值。要找到观察维度,请使用getObservationInfo
功能。在这种情况下,观察结果在四元素矢量中。
argstr =.“{1(4,1)}”;
使用该代码生成代码Codegen.
功能。
Codegen('-config'那'cfg'那“evaluatePolicy”那'-args'argstr,“报告”);
此命令生成MEX功能evaluatePolicy_mex
.
您可以为表,深度神经网络,或线性基函数策略生成C/ c++代码使用Matlab编码器.
使用Matlab编码器,你可以生成:
C / C ++代码用于使用Q表,值表或线性基础函数的策略。有关一般C / C ++代码生成的更多信息,请参阅生成代码(MATLAB编码器).
C ++代码用于使用深神经网络的策略。注意,不支持使用经常性神经网络(RNN)的连续动作PG,AC,PP万博1manbetxO和SAC代理的代码生成。有关支持的图层列表,请参阅万博1manbetx用于代码生成的网络和层万博1manbetx(MATLAB编码器).有关更多信息,请参阅与Matlab编码器深入学习的先决条件(MATLAB编码器)和与Matlab编码器深入学习(MATLAB编码器).
例如,生成C代码而不对培训的策略梯度代理的第三方库上的依赖性训练PG代理平衡车杆系统.
装载训练有素的特工。
加载(“MATLABCartpolePG.mat”那'代理人'的)
为此代理创建策略评估功能。
generatePolicyFunction(代理)
此命令创建evaluatePolicy.m
文件,其中包含策略函数,以及AgentData.mat.
文件,包含培训的深神经网络演员。对于给定的观察,策略函数使用演员网络评估每个潜在动作的概率。然后,策略函数随机选择基于这些概率的动作。
配置Codegen.
函数生成适合于构建MEX文件的代码。
cfg = coder.config('mex');
在配置对象上,将目标语言设置为c++,并设置DeepLearningConfig
“没有任何
'.此选项不会使用任何第三方库生成代码。
cfg.targetlang ='C';cfg。DeepLearningConfig =编码器。DeepLearningConfig ('没有任何');
为策略评估功能设置示例输入值。要找到观察维度,请使用getObservationInfo
功能。在这种情况下,观察结果在四元素矢量中。
argstr =.“{1(4,1)}”;
使用该代码生成代码Codegen.
功能。
Codegen('-config'那'cfg'那“evaluatePolicy”那'-args'argstr,“报告”);
此命令为包含深神经网络演员的策略渐变代理生成C ++代码。
以生成的c++代码为例,对策略梯度代理进行了训练训练PG代理平衡车杆系统使用Intel Math Kernel库进行深神经网络(MKL-DNN)。
装载训练有素的特工。
加载(“MATLABCartpolePG.mat”那'代理人'的)
为此代理创建策略评估功能。
generatePolicyFunction(代理)
此命令创建evaluatePolicy.m
文件,其中包含策略函数,以及AgentData.mat.
文件,包含培训的深神经网络演员。对于给定的观察,策略函数使用演员网络评估每个潜在动作的概率。然后,策略函数随机选择基于这些概率的动作。
配置Codegen.
函数生成适合于构建MEX文件的代码。
cfg = coder.config('mex');
在配置对象上,将目标语言设置为c++,并设置DeepLearningConfig
到目标库'mkldnn
'.此选项使用用于深度神经网络的英特尔数学内核库(Intel MKL-DNN)生成代码。
cfg.targetlang ='c ++';cfg。DeepLearningConfig =编码器。DeepLearningConfig ('mkldnn');
为策略评估功能设置示例输入值。要找到观察维度,请使用getObservationInfo
功能。在这种情况下,观察结果在四元素矢量中。
argstr =.“{1(4,1)}”;
使用该代码生成代码Codegen.
功能。
Codegen('-config'那'cfg'那“evaluatePolicy”那'-args'argstr,“报告”);
此命令为包含深神经网络演员的策略渐变代理生成C ++代码。
例如,为培训的Q学习代理生成C代码在基本网格世界中训练强化学习代理.
装载训练有素的特工。
加载('basicgwqagent.mat'那'qagent'的)
为此代理创建策略评估功能。
GeneratePolicyFunction(Qagent)
此命令创建evaluatePolicy.m
文件,其中包含策略函数,以及AgentData.mat.
文件,其中包含经过训练的Q表值函数。对于给定的观察,策略函数使用Q表查找每个潜在操作的值函数。然后,策略函数选择价值函数最大的动作。
为策略评估功能设置示例输入值。要找到观察维度,请使用getObservationInfo
功能。在这种情况下,有一个尺寸观察(属于离散的可能值集)。
argstr =.'{[1]}';
配置Codegen.
生成适合定位静态库的嵌入式C代码的功能,并将输出文件夹设置为buildFolder
.
cfg = coder.config('lib');外档=“buildFolder”;
生成C代码使用Codegen.
功能。
Codegen(“c”那“- d”倒转褶皱,'-config'那'cfg'那......“evaluatePolicy”那'-args'argstr,“报告”);