一旦你培养了强化学习剂,也可以生成部署最优策略。您可以生成:
CUDA®使用GPU编码器深层神经网络策略码™
C / C ++使用表,深神经网络,或直链基函数策略码MATLAB®编码器™
代码生成深层神经网络的政策支持只能与一个输入层网络。万博1manbetx
有关训练强化学习代理的更多信息,请参见火车强化学习代理。
要生成一个强化学习剂的训练有素的最优策略代码,您必须首先创建一个代理策略评估功能。您可以生成任何类型的策略表示对象的代理策略函数:
值和Q表(rlTableRepresentation
)
深层神经网络(rlLayerRepresentation
)
线性基函数(rlLinearBasisRepresentation
)
有关不同类型的策略的详细信息,请参阅创建策略和价值功能交涉。
若要创建基于给定观察选择操作的策略评估函数,请使用generatePolicyFunction
命令。此命令生成一个MATLAB脚本,其中包含了策略评估功能,MAT文件,其中包含最佳策略数据。
您可以使用GPU编码器或生成代码来部署这一政策功能MATLAB编码器。
如果你的训练的最佳策略使用深层神经网络,可以生成使用GPU编码器的政策CUDA代码。有几个必需和建议必备产品生成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
文件,其中包含了训练的深层神经网络的演员。对于给定的观察,政策功能评估使用网络的演员每一个潜在动作的概率。然后,策略函数随机选择基于这些概率的操作。
由于演员网络为这个PG剂具有单一的输入层和单个输出层,可以生成用于使用GPU编码器该网络的代码。例如,您可以生成CUDA兼容MEX功能。
配置代码生成
函数创建一个CUDA兼容的c++ MEX函数。
CFG = coder.gpuConfig('MEX');cfg.TargetLang ='C ++';cfg.DeepLearningConfig = coder.DeepLearningConfig(“cudnn”);
设置策略评估输入参数的维度,该参数对应于代理的观察规范维度。若要查找观察维度,请使用getObservationInfo
函数。在这种情况下,观测在四元素矢量。
argstr =“{1 (4,1)}”;
使用代码生成代码生成
函数。
代码生成('-config','CFG','evaluatePolicy','-args'argstr,“报告”);
此命令生成的MEX函数evaluatePolicy_mex
。
您可以为表、深度神经网络或线性基函数策略生成C/ c++代码MATLAB编码器。
运用MATLAB编码器,你可以生成:
C / C ++对策略代码,使用q表,值表,或直链基函数。有关常规的C / C ++代码生成的更多信息,请参见生成代码(编码器MATLAB)。
C ++代码,使用深层神经网络政策。欲了解更多信息,请参阅先决条件深度学习与MATLAB编码器(编码器MATLAB)和深度学习与MATLAB编码器(编码器MATLAB)。
作为一个例子,产生用于在训练Q学习剂C代码在基本网格世界中训练增强学习代理。
装上训练好的特工。
加载('basicGWQAgent.mat','qAgent')
创建该代理的策略评估功能。
generatePolicyFunction(qAgent)
此命令创建evaluatePolicy.m
文件,其中包含策略函数,以及agentData.mat
文件,其中包含经过训练的Q表值函数。对于给定的观察,策略函数使用Q表查找每个潜在操作的值函数。然后,策略函数选择值函数最大的操作。
设置策略评估输入参数的维度,该参数对应于代理的观察规范维度。若要查找观察维度,请使用getObservationInfo
函数。在这种情况下,只有一个有限的观测值。
argstr ='{[1]}';
配置代码生成
函数来产生合适的可嵌入的C代码用于定位一个静态库,并输出文件夹设定为buildFolder
。
CFG = coder.config('LIB');outFolder =“buildFolder”;
方法生成C代码代码生成
函数。
代码生成(“c”,“- d”倒转褶皱,'-config','CFG',...'evaluatePolicy','-args'argstr,“报告”);