一旦您训练了强化学习代理,您就可以生成代码来部署最优策略。您可以生成:
CUDA®使用GPU Coder™的深度神经网络策略代码
C/ c++代码,适用于表,深度神经网络,或线性基函数策略使用MATLAB®编码器™
只要支持所有使用的层,在任何输入路径中金宝app使用前馈神经网络的代理都支持代码生成。使用递归神经网络(RNN)的连续动作PG、AC金宝app、PPO和SAC代理不支持代码生成。
有关训练强化学习代理的更多信息,请参见训练强化学习代理。
要创建基于给定观察选择操作的策略评估函数,请使用generatePolicyFunction
命令。该命令生成一个MATLAB脚本,其中包含策略评估函数,以及一个mat -文件,其中包含最优策略数据。
您可以使用GPU编码器或生成代码来部署此策略功能MATLAB编码器。
如果您训练的最优策略使用深度神经网络,您可以使用GPU编码器为策略生成CUDA代码。有关受支持的gpu的更多信息,请参阅金宝appGPU支金宝app持情况(并行计算工具箱)。对于生成深度神经网络CUDA代码,有几个必需的和推荐的先决条件产品。下载188bet金宝搏有关更多信息,请参见安装必备产品下载188bet金宝搏(GPU编码器)和设置前提产品下载188bet金宝搏(GPU编码器)。
并非所有的深度神经网络层都支持GPU代码生成。金宝app有关受支持的层的列表,请参见金宝app金宝app支持的网络、层和类(GPU编码器)。有关GPU代码生成的更多信息和示例,请参见基于GPU编码器的深度学习(GPU编码器)。
以中训练的策略梯度代理为例,生成GPU代码训练PG代理平衡车杆系统。
装载训练有素的特工。
负载(“MATLABCartpolePG.mat”,“代理”)
为该代理创建策略评估函数。
generatePolicyFunction(代理)
该命令创建evaluatePolicy.m
文件,其中包含策略函数,以及agentData.mat
文件,其中包含训练的深度神经网络参与者。对于给定的观测,策略函数使用行动者网络评估每个潜在动作的概率。然后,策略函数根据这些概率随机选择一个行动。
你可以使用GPU编码器为这个网络生成代码。例如,可以生成一个CUDA兼容的MEX函数。
配置codegen
函数来创建一个CUDA兼容的c++ MEX函数。
cfg = coder.gpuConfig (墨西哥人的);cfg。TargetLang =“c++”;cfg。DeepLearningConfig =编码器。DeepLearningConfig (“cudnn”);
为策略评估功能设置示例输入值。要找到观察维度,请使用getObservationInfo
函数。在这种情况下,观测值是一个四元素向量。
argstr =“{1(4,1)}”;
使用codegen
函数。
codegen (“配置”,“cfg”,“evaluatePolicy”,“参数”argstr,“报告”);
此命令生成MEX函数evaluatePolicy_mex
。
您可以为表,深度神经网络,或线性基函数策略生成C/ c++代码使用MATLAB编码器。
使用MATLAB编码器,你可以生成:
C/ c++代码,用于使用Q表、值表或线性基函数的策略。有关通用C/ c++代码生成的更多信息,请参见生成代码(MATLAB编码器)。
使用深度神经网络的策略的c++代码。注意,使用递归神经网络(RNN)的连续动作PG、AC、PPO和SA金宝appC代理不支持代码生成。有关受支持的层的列表,请参见金宝app支持代码生成的网络和层金宝app(MATLAB编码器)。有关更多信息,请参见深度学习与MATLAB编码器的先决条件(MATLAB编码器)和深度学习与MATLAB编码器(MATLAB编码器)。
例如,生成不依赖第三方库的C代码,用于训练的策略梯度代理训练PG代理平衡车杆系统。
装载训练有素的特工。
负载(“MATLABCartpolePG.mat”,“代理”)
为该代理创建策略评估函数。
generatePolicyFunction(代理)
该命令创建evaluatePolicy.m
文件,其中包含策略函数,以及agentData.mat
文件,其中包含训练的深度神经网络参与者。对于给定的观测,策略函数使用行动者网络评估每个潜在动作的概率。然后,策略函数根据这些概率随机选择一个行动。
配置codegen
函数生成适合于构建MEX文件的代码。
cfg = coder.config (墨西哥人的);
在配置对象上,将目标语言设置为c++,并设置DeepLearningConfig
“没有一个
'.此选项不使用任何第三方库生成代码。
cfg。TargetLang =“C”;cfg。DeepLearningConfig =编码器。DeepLearningConfig (“没有”);
为策略评估功能设置示例输入值。要找到观察维度,请使用getObservationInfo
函数。在这种情况下,观测值是一个四元素向量。
argstr =“{1(4,1)}”;
使用codegen
函数。
codegen (“配置”,“cfg”,“evaluatePolicy”,“参数”argstr,“报告”);
这个命令为包含深度神经网络参与者的策略梯度代理生成c++代码。
以生成的c++代码为例,对策略梯度代理进行了训练训练PG代理平衡车杆系统使用英特尔深度神经网络数学内核库(MKL-DNN)。
装载训练有素的特工。
负载(“MATLABCartpolePG.mat”,“代理”)
为该代理创建策略评估函数。
generatePolicyFunction(代理)
该命令创建evaluatePolicy.m
文件,其中包含策略函数,以及agentData.mat
文件,其中包含训练的深度神经网络参与者。对于给定的观测,策略函数使用行动者网络评估每个潜在动作的概率。然后,策略函数根据这些概率随机选择一个行动。
配置codegen
函数生成适合于构建MEX文件的代码。
cfg = coder.config (墨西哥人的);
在配置对象上,将目标语言设置为c++,并设置DeepLearningConfig
到目标库'mkldnn
'.此选项使用用于深度神经网络的英特尔数学内核库(Intel MKL-DNN)生成代码。
cfg。TargetLang =“c++”;cfg。DeepLearningConfig =编码器。DeepLearningConfig (“mkldnn”);
为策略评估功能设置示例输入值。要找到观察维度,请使用getObservationInfo
函数。在这种情况下,观测值是一个四元素向量。
argstr =“{1(4,1)}”;
使用codegen
函数。
codegen (“配置”,“cfg”,“evaluatePolicy”,“参数”argstr,“报告”);
这个命令为包含深度神经网络参与者的策略梯度代理生成c++代码。
为例,生成在中训练的Q-learning agent的C代码在基本网格世界中训练强化学习代理。
装载训练有素的特工。
负载(“basicGWQAgent.mat”,“qAgent”)
为该代理创建策略评估函数。
generatePolicyFunction (qAgent)
该命令创建evaluatePolicy.m
文件,其中包含策略函数,以及agentData.mat
文件,其中包含经过训练的Q表值函数。对于给定的观察,策略函数使用Q表查找每个潜在操作的值函数。然后,策略函数选择价值函数最大的动作。
为策略评估功能设置示例输入值。要找到观察维度,请使用getObservationInfo
函数。在这种情况下,有一个单一的一维观测(属于一个离散的可能值集)。
argstr =“{[1]}”;
配置codegen
函数生成适合于目标为静态库的可嵌入C代码,并将输出文件夹设置为buildFolder
。
cfg = coder.config (“自由”);倒转褶皱=“buildFolder”;
生成C代码使用codegen
函数。
codegen (“c”,“- d”倒转褶皱,“配置”,“cfg”,...“evaluatePolicy”,“参数”argstr,“报告”);