主要内容

setActor

集演员强化学习代理

自从R2019a

描述

例子

代理= setActor (代理,演员)更新强化学习代理,代理使用指定的演员对象,演员

例子

全部折叠

假设您有一个现有的训练强化学习代理。对于这个示例,加载训练有素的代理火车DDPG剂来控制双积分器系统

负载(“DoubleIntegDDPG.mat”,“代理”)

从代理得到演员函数近似者。

演员= getActor(代理);

从演员获得可学的参数。

params = getLearnableParameters(演员)
params =2×1单元阵列{[-15.4601 - -7.2076]}{[0]}

修改参数值。对于这个示例,简单地将所有的参数乘以2

modifiedParams = cellfun (@ x * 2 (x),参数,“UniformOutput”、假);

设置参数值的演员新修改后的值。

演员= setLearnableParameters(演员,modifiedParams);

设置代理新修改的演员的演员。

setActor(代理、演员);

显示新的参数值。

getLearnableParameters (getActor(代理)
ans =2×1单元阵列{[-30.9201 - -14.4153]}{[0]}

创造一个环境,一个连续的操作空间和获得其观察和操作规范。对于这个示例,负载在示例中使用的环境火车DDPG剂来控制双积分器系统

负载预定义的环境。

env = rlPredefinedEnv (“DoubleIntegrator-Continuous”);

获得观察和操作规范。

obsInfo = getObservationInfo (env);actInfo = getActionInfo (env);

创建PPO代理从环境中观察和操作规范。该代理使用默认深层神经网络的演员和评论家。

代理= rlPPOAgent (obsInfo actInfo);

修改强化学习中的深层神经网络代理,您必须首先提取演员和评论家函数近似者。

演员= getActor(代理);评论家= getCritic(代理);

从演员和提取深层神经网络评论家函数近似者。

actorNet = getModel(演员);criticNet = getModel(批评);

网络是dlnetwork对象。查看使用情节功能,您必须将它们转换为layerGraph对象。

例如,查看演员网络。

情节(layerGraph (actorNet))

图包含一个坐标轴对象。坐标轴graphplot类型的对象包含一个对象。

验证一个网络,使用analyzeNetwork。例如,验证网络评论家。

analyzeNetwork (criticNet)

您可以修改演员和评论家网络和拯救他们回代理。修改网络,您可以使用深层网络设计师为每个网络应用。打开应用程序,使用下面的命令。

deepNetworkDesigner (layerGraph (criticNet) deepNetworkDesigner (layerGraph (actorNet))

深层网络设计师,修改网络。例如,您可以添加额外的层网络。当你修改网络,不改变网络的输入和输出层返回的getModel。建立网络的更多信息,见构建网络与深度网络设计师

验证修改后的网络深层网络设计师,你必须点击分析了dlnetwork下,分析部分。出口MATLAB®工作区中修改后的网络结构,生成代码来创建新网络和从命令行运行这段代码。不使用导出选项深层网络设计师。为例,展示了如何生成并运行代码,看看创建DQN代理使用深层网络设计师和训练使用图像的观察

对于这个示例,创建的代码修改的演员和评论家网络createModifiedNetworks辅助脚本。

createModifiedNetworks

每个网络包括一个额外的修改fullyConnectedLayerreluLayer在他们的主要常见的路径。查看修改后的演员网络。

情节(layerGraph (modifiedActorNet))

图包含一个坐标轴对象。坐标轴graphplot类型的对象包含一个对象。

出口网络后,网络插入演员和评论家函数近似者。

演员= setModel(演员,modifiedActorNet);评论家= setModel(评论家,modifiedCriticNet);

最后,将修改后的演员兼评论家函数近似者插入到演员和批评的对象。

代理= setActor(代理、演员);代理= setCritic(代理、批评);

输入参数

全部折叠

强化学习代理包含一个演员,指定为以下之一:

请注意

代理是一个处理对象。因此,更新了setActor是否代理作为一个输出参数返回。关于处理对象的更多信息,请参阅处理对象的行为

请注意

如果代理是一个rlMBPOAgent对象,设置演员,使用setActor (agent.BaseAgent、演员)

演员对象,指定为以下之一:

近似模型的输入和输出的演员(通常情况下,神经网络)的观察和行动规范必须匹配最初的代理。

创建一个演员,使用下列方法之一:

  • 使用相应的函数近似者对象创建的演员。

  • 从代理使用获取现有的演员getActor

输出参数

全部折叠

更新代理,作为一个代理对象返回。请注意,代理是一个处理对象。因此它的演员被更新setActor是否代理作为一个输出参数返回。关于处理对象的更多信息,请参阅处理对象的行为

版本历史

介绍了R2019a