主要内容

部署经过培训的强化学习策略

培训强化学习代理后,您可以生成代码以部署最佳策略。您可以生成:

  • 库达®使用GPU编码器的深层神经网络策略代码™

  • 表、深度神经网络或线性基函数策略的C/C++代码,使用MATLAB®编码器™

支持在任何输入路径中使用前馈神经网络的万博1manbetx代理生成代码,前提是支持所有使用的层。使用递归神经网络(RNN)的连续动作PG、AC、PPO和SAC代理不支持代码生成。

有关训练强化学习代理的更多信息,请参见培训强化学习代理

要创建基于给定观察选择操作的策略评估函数,请使用generatePolicyFunction命令此命令生成一个包含策略评估函数的MATLAB脚本和一个包含最佳策略数据的MAT文件。

您可以使用GPU编码器或MATLAB编码器

使用生成代码GPU编码器

如果经过训练的最优策略使用深度神经网络,则可以使用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函数。

配置编码基因函数来创建一个CUDA兼容的c++ MEX函数。

cfg=coder.gpuConfig(“墨西哥”); cfg.TargetLang=“C++”;cfg。DeepLearningConfig =编码器。DeepLearningConfig (“cudnn”);

为策略评估功能设置示例输入值。要找到观察维度,请使用getObservationInfo作用在这种情况下,观察值位于四元素向量中。

argstr=“{1(4,1)}”

使用编码基因作用

编码基因(“-config”,“cfg”,“evaluatePolicy”,“-args”argstr,“报告”);

此命令生成MEX函数evaluatePolicy_mex

使用生成代码MATLAB编码器

您可以为表,深度神经网络,或线性基函数策略生成C/ c++代码使用MATLAB编码器

使用MATLAB编码器,你可以生成:

为深度神经网络策略生成C代码,无需使用任何第三方库

例如,为在中培训的策略梯度代理生成不依赖于第三方库的C代码训练PG代理平衡车杆系统

装载训练有素的特工。

装载(“MATLABCartpolePG.mat”,“代理人”)

为此代理创建策略评估函数。

generatePolicyFunction(代理)

此命令创建evaluatePolicy.m文件,其中包含策略函数,以及agentData.mat文件,其中包含经过训练的深层神经网络参与者。对于给定的观察,策略函数使用参与者网络评估每个潜在动作的概率。然后,策略函数根据这些概率随机选择动作。

配置编码基因函数生成适合于构建MEX文件的代码。

cfg=coder.config(“墨西哥”);

在配置对象上,将目标语言设置为c++,并设置DeepLearningConfig没有一个“。此选项不使用任何第三方库生成代码。

cfg。TargetLang =“C”;cfg。DeepLearningConfig =编码器。DeepLearningConfig (“没有”);

为策略评估功能设置示例输入值。要找到观察维度,请使用getObservationInfo作用在这种情况下,观察值位于四元素向量中。

argstr=“{1(4,1)}”

使用编码基因作用

编码基因(“-config”,“cfg”,“evaluatePolicy”,“-args”argstr,“报告”);

此命令为包含深度神经网络角色的策略梯度代理生成C++代码。

使用第三方库生成深度神经网络策略的c++代码

以生成的c++代码为例,对策略梯度代理进行了训练训练PG代理平衡车杆系统使用“英特尔深度神经网络数学内核库”(MKL-DNN)。

装载训练有素的特工。

装载(“MATLABCartpolePG.mat”,“代理人”)

为此代理创建策略评估函数。

generatePolicyFunction(代理)

此命令创建evaluatePolicy.m文件,其中包含策略函数,以及agentData.mat文件,其中包含经过训练的深层神经网络参与者。对于给定的观察,策略函数使用参与者网络评估每个潜在动作的概率。然后,策略函数根据这些概率随机选择动作。

配置编码基因函数生成适合于构建MEX文件的代码。

cfg=coder.config(“墨西哥”);

在配置对象上,将目标语言设置为c++,并设置DeepLearningConfig到目标库的mkldnn”。此选项使用用于深度神经网络的英特尔数学内核库(Intel MKL-DNN)生成代码。

cfg。TargetLang =“C++”;cfg。DeepLearningConfig =编码器。DeepLearningConfig (“mkldnn”);

为策略评估功能设置示例输入值。要找到观察维度,请使用getObservationInfo作用在这种情况下,观察值位于四元素向量中。

argstr=“{1(4,1)}”

使用编码基因作用

编码基因(“-config”,“cfg”,“evaluatePolicy”,“-args”argstr,“报告”);

此命令为包含深度神经网络角色的策略梯度代理生成C++代码。

为Q表策略生成C代码

例如,为在中培训的Q-learning agent生成C代码在基本网格世界中训练强化学习代理

装载训练有素的特工。

装载(“basicGWQAgent.mat”,“qAgent”)

为此代理创建策略评估函数。

generatePolicyFunction (qAgent)

此命令创建evaluatePolicy.m文件,其中包含策略函数,以及agentData.mat文件,其中包含经过训练的Q表值函数。对于给定的观察,策略函数使用Q表查找每个潜在操作的值函数。然后,策略函数选择价值函数最大的动作。

为策略评估功能设置示例输入值。要找到观察维度,请使用getObservationInfo作用在这种情况下,存在单个一维观测(属于一组离散的可能值)。

argstr='{[1]}'

配置编码基因函数生成适用于静态库的可嵌入C代码,并将输出文件夹设置为buildFolder

cfg=coder.config(“lib”); 外流器=“buildFolder”

生成C代码使用编码基因作用

编码基因(“c”,“- d”倒转褶皱,“-config”,“cfg”,...“evaluatePolicy”,“-args”argstr,“报告”);

另见

相关的话题