主要内容

部署训练有素的强化学习政策

一旦您训练了强化学习代理,您就可以生成代码来部署最优策略。您可以生成:

  • CUDA®使用GPU Coder™的深度神经网络策略代码

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

只要支持所有使用的层,在任何输入路径中金宝app使用前馈神经网络的代理都支持代码生成。使用递归神经网络(RNN)的连续动作PG、AC金宝app、PPO和SAC代理不支持代码生成。

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

要创建基于给定观察选择操作的策略评估函数,请使用生成策略函数命令。该命令生成一个MATLAB脚本,其中包含策略评估函数,以及一个mat -文件,其中包含最优策略数据。

您可以使用GPU编码器或生成代码来部署此策略功能MATLAB编码器

使用生成代码GPU编码器

如果您训练的最优策略使用深度神经网络,您可以使用GPU编码器为策略生成CUDA代码。有关受支持的gpu的更多信息,请参阅金宝appGPU版金宝app本支持(并行计算工具箱)。有几种必需的和推荐的先决产品可用于为深度神经网络生成CUDA代码。有关更多信息,请参阅下载188bet金宝搏安装必备产品下载188bet金宝搏(GPU编码器)设置前提产品下载188bet金宝搏(GPU编码器)

并非所有深层神经网络层都支持GPU代码生成。有关受支持图层的列表,请参金宝app见金宝app支持的网络、层和类(GPU编码器).有关GPU代码生成的更多信息和示例,请参见GPU编码器的深度学习(GPU编码器)

生成CUDA深度神经网络策略代码

例如,为在中培训的策略梯度代理生成GPU代码培训PG代理以平衡车柱系统

给训练有素的特工装上子弹。

负载(“MATLABCartpolePG.mat”“代理”

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

generatePolicyFunction(代理)

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

您可以使用GPU编码器生成此网络的代码。例如,您可以生成与CUDA兼容的MEX函数。

配置codegen函数创建CUDA兼容的C++ MEX函数。

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

设置策略评估函数的示例输入值。要查找观察维度,请使用获取观测信息函数。在这种情况下,观测值是一个四元素向量。

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

使用codegen函数。

codegen (“配置”“cfg”“evaluatePolicy”“参数”,argstr,“-报告”);

此命令生成MEX函数评估政策

使用生成代码MATLAB编码员

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

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

不使用任何第三方库生成深度神经网络策略的C代码

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

给训练有素的特工装上子弹。

负载(“MATLABCartpolePG.mat”“代理”

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

generatePolicyFunction(代理)

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

配置codegen函数生成适合构建MEX文件的代码。

cfg = coder.config (墨西哥人的);

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

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

设置策略评估函数的示例输入值。要查找观察维度,请使用获取观测信息函数。在这种情况下,观测值是一个四元素向量。

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

使用codegen函数。

codegen (“配置”“cfg”“evaluatePolicy”“参数”,argstr,“-报告”);

这个命令为包含深度神经网络参与者的策略梯度代理生成c++代码。

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

作为例子,生成用于训练的策略梯度代理的C++代码。培训PG代理以平衡车柱系统使用英特尔深度神经网络数学内核库(MKL-DNN)。

给训练有素的特工装上子弹。

负载(“MATLABCartpolePG.mat”“代理”

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

generatePolicyFunction(代理)

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

配置codegen函数生成适合构建MEX文件的代码。

cfg = coder.config (墨西哥人的);

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

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

设置策略评估函数的示例输入值。要查找观察维度,请使用获取观测信息函数。在这种情况下,观测值是一个四元素向量。

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

使用codegen函数。

codegen (“配置”“cfg”“evaluatePolicy”“参数”,argstr,“-报告”);

这个命令为包含深度神经网络参与者的策略梯度代理生成c++代码。

为Q表策略生成C代码

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

给训练有素的特工装上子弹。

负载(“basicGWQAgent.mat”“qAgent”

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

generatePolicyFunction (qAgent)

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

设置策略评估函数的示例输入值。要查找观察维度,请使用获取观测信息函数。在这种情况下,有一个单一的一维观测(属于一个离散的可能值集)。

argstr =“{[1]}”

配置codegen函数生成适合于目标为静态库的可嵌入C代码,并将输出文件夹设置为构建文件夹

cfg = coder.config (“自由”);倒转褶皱=“buildFolder”

使用codegen函数。

codegen (“-c”“-d”,外接器,“配置”“cfg”...“evaluatePolicy”“参数”,argstr,“-报告”);

另请参阅

相关话题