一旦您训练了强化学习代理,您就可以生成代码来部署最优策略。您可以生成:
CUDA®使用GPU Coder™的深度神经网络策略代码
C/ c++代码,适用于表,深度神经网络,或线性基函数策略使用MATLAB®编码器™
请注意
深度神经网络策略的代码生成仅支持具有单个输入层的网络。金宝app
有关培训加固学习代理商的更多信息,请参阅训练强化学习代理.
要创建基于给定观察的策略评估功能,请使用生成policyfunction.
命令。该命令生成一个MATLAB脚本,其中包含策略评估函数,以及一个mat -文件,其中包含最优策略数据。
您可以使用GPU编码器或生成代码来部署此策略功能MATLAB编码器.
如果您训练的最优策略使用深度神经网络,您可以使用GPU编码器为策略生成CUDA代码。对于生成深度神经网络CUDA代码,有几个必需的和推荐的先决条件产品。下载188bet金宝搏有关更多信息,请参见安装必备产品下载188bet金宝搏(GPU编码器)和设置前提产品下载188bet金宝搏(GPU编码器).
并非所有深度神经网络层都支持GPU代码生成。金宝app有关支持的图层列表,请参阅金宝app金宝app支持的网络和层(GPU编码器).有关GPU代码生成的更多信息和示例,请参见与GPU编码器深入学习(GPU编码器).
例如,为培训的策略梯度代理生成GPU代码火车PG代理可以平衡车杆系统.
加载培训的代理。
负载('matlabcartpolepg.mat',“代理”)
为该代理创建策略评估函数。
GeneratePolicyFunction(代理)
该命令创建equationpolicy.m.
文件,包含策略函数,以及agentData.mat
文件,其中包含训练的深度神经网络参与者。对于给定的观测,策略函数使用行动者网络评估每个潜在动作的概率。然后,策略函数根据这些概率随机选择一个行动。
因为这个PG代理的actor网络只有一个输入层和一个输出层,你可以使用GPU编码器为这个网络生成代码。例如,可以生成一个CUDA兼容的MEX函数。
配置codegen
功能创建CUDA兼容C ++ MEX功能。
cfg = coder.gpuConfig (墨西哥人的);cfg.targetlang =“c++”;cfg。DeepLearningConfig =编码器。DeepLearningConfig ('cudnn');
设置策略评估输入参数的尺寸,该参数对应于代理的观察规范维度。要找到观察尺寸,请使用getobservationInfo.
函数。在这种情况下,观测值是一个四元素向量。
argstr ='{ONEO(4,1)}';
使用codegen
函数。
codegen (“配置”,“cfg”,“evaluatePolicy”,“参数”,argstr,'-报告');
此命令生成MEX函数evaluatepolicy_mex.
.
您可以使用的是表,深神经网络或线性基础函数策略的C / C ++代码MATLAB编码器.
使用MATLAB编码器,您可以生成:
C/ c++代码,用于使用Q表、值表或线性基函数的策略。有关通用C/ c++代码生成的更多信息,请参见生成代码(MATLAB编码器).
使用深度神经网络的策略的c++代码。有关更多信息,请参见深度学习与MATLAB编码器的先决条件(MATLAB编码器)和深度学习与MATLAB编码器(MATLAB编码器).
为例,生成C代码的策略梯度代理训练火车PG代理可以平衡车杆系统.
加载培训的代理。
负载('matlabcartpolepg.mat',“代理”)
为该代理创建策略评估函数。
GeneratePolicyFunction(代理)
该命令创建equationpolicy.m.
文件,包含策略函数,以及agentData.mat
文件,其中包含训练的深度神经网络参与者。对于给定的观测,策略函数使用行动者网络评估每个潜在动作的概率。然后,策略函数根据这些概率随机选择一个行动。
配置codegen
生成适合定位静态库的代码的功能。
cfg = coder.config (“自由”);
在配置对象上,将目标语言设置为C ++,并设置DeeplearningConfig
到目标库'Mkldnn.
'。此选项使用Intel Math Kernel库进行深度神经网络(Intel MKL-DNN)生成代码。
cfg.targetlang =“c++”;cfg。DeepLearningConfig =编码器。DeepLearningConfig (“mkldnn”);
设置策略评估输入参数的尺寸,该参数对应于代理的观察规范维度。要找到观察尺寸,请使用getobservationInfo.
函数。在这种情况下,观测值是一个四元素向量。
argstr ='{ONEO(4,1)}';
使用codegen
函数。
codegen (“配置”,“cfg”,“evaluatePolicy”,“参数”,argstr,'-报告');
这个命令为包含深度神经网络参与者的策略梯度代理生成c++代码。
为例,生成在中训练的Q-learning agent的C代码在基本网格世界中列车加固学习代理.
加载培训的代理。
负载(“basicGWQAgent.mat”,“qAgent”)
为该代理创建策略评估函数。
generatePolicyFunction (qAgent)
该命令创建equationpolicy.m.
文件,包含策略函数,以及agentData.mat
文件,包含培训的Q表值函数。对于给定的观察,策略函数使用Q表查找每个潜在动作的值函数。然后,策略函数选择值函数最大的操作。
设置策略评估输入参数的尺寸,该参数对应于代理的观察规范维度。要找到观察尺寸,请使用getobservationInfo.
函数。在这种情况下,有一个有限的观察。
argstr =“{[1]}”;
配置codegen
函数生成适合于目标为静态库的可嵌入C代码,并将输出文件夹设置为BuildFolder.
.
cfg = coder.config (“自由”);倒转褶皱='buildfolder';
使用C代码使用codegen
函数。
codegen ('-C','-d',外档,“配置”,“cfg”,...“evaluatePolicy”,“参数”,argstr,'-报告');