主要内容

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

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

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

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

在任何输入路径上使用前馈神经网络的代理都支持代码生成,前提是支持所有使用的层。对于使用循环神经网络(RNN)的连续动作PG、AC、PPO和SAC代理,不支持代码生成。

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

若要生成基于给定观察选择操作的策略评估函数,请使用generatePolicyFunction.您可以使用GPU Coder或生成代码来部署此策略函数MATLAB编码器

生成一个Simulink®根据给定的观察选择操作的策略评估块,使用generatePolicyBlock.您可以生成用于部署此策略块的代码仿真软件编码器

使用生成代码GPU编码器

如果你训练的最优策略使用深度神经网络,你可以使用GPU Coder为策略生成CUDA代码。有关支持的图形处理器的更多信息,请参见GPU计算要求(并行计算工具箱).为深度神经网络生成CUDA代码有几个必需和推荐的先决条件产品。2022世界杯八强谁会赢?有关更多信息,请参见安装必备产品2022世界杯八强谁会赢?(GPU编码器)而且设置必备产品2022世界杯八强谁会赢?(GPU编码器)

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

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

例如,为训练的策略梯度代理生成GPU代码训练PG代理人平衡车杆系统

装载训练有素的代理。

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

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

generatePolicyFunction(代理)

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

您可以使用GPU Coder为该网络生成代码。例如,您可以生成一个CUDA兼容的MEX函数。

配置codegen函数来创建一个CUDA兼容的c++ MEX函数。

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

为策略评估函数设置一个输入样例。要找到观测维度,请使用getObservationInfo函数。在这种情况下,观测值是一个四元向量。

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

使用codegen函数。

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

该命令用来生成MEX功能evaluatePolicy_mex

使用生成代码MATLAB编码器

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

使用MATLAB编码器,可生成:

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

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

装载训练有素的代理。

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

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

generatePolicyFunction(代理)

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

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

CFG = code .config(墨西哥人的);

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

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

为策略评估函数设置一个输入样例。要找到观测维度,请使用getObservationInfo函数。在这种情况下,观测值是一个四元向量。

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

使用codegen函数。

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

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

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

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

装载训练有素的代理。

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

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

generatePolicyFunction(代理)

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

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

CFG = code .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表策略的C代码

例如,为训练过的q学习代理生成C代码在Basic Grid World中训练强化学习代理

装载训练有素的代理。

负载(“basicGWQAgent.mat”“qAgent”

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

generatePolicyFunction (qAgent)

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

为策略评估函数设置一个输入样例。要找到观测维度,请使用getObservationInfo函数。在这种情况下,有一个单一的一维观测(属于一个离散的可能值集)。

argstr =“{[1]}”

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

CFG = code .config(“自由”);倒转褶皱=“buildFolder”

方法生成C代码codegen函数。

codegen (“c”“- d”倒转褶皱,“配置”“cfg”...“evaluatePolicy”“参数”argstr,“报告”);

另请参阅

|

相关的话题

Baidu
map