主要内容

MonitorLogger

日志强化学习训练数据来监视窗口

自从R2022b

    描述

    使用一个MonitorLogger对象日志数据监控窗口,在火车内部函数或一个自定义训练循环。日志数据使用火车函数时,指定适当的回调函数MonitorLogger,如例子所示。这些回调函数执行在不同阶段的培训,例如,EpisodeFinishedFcn是一个集完成后执行。一个回调函数的输出是一个结构,它包含的数据记录在那个阶段的训练。

    请注意

    使用一个MonitorLogger当使用对象来记录数据火车功能不影响和不受任何选项保存在训练中指定一个代理rlTrainingOptions对象。

    请注意

    MonitorLogger是一个处理对象。如果你指定一个现有的MonitorLogger对象到一个新的MonitorLogger对象,新对象和原来的一个引用相同的底层对象在内存中。保留原来的对象参数供以后使用,MAT-file保存对象。关于处理对象的更多信息,请参阅处理对象的行为

    创建

    创建一个MonitorLogger对象使用rlDataLogger指定一个trainingProgressMonitor对象作为输入参数。

    属性

    全部展开

    对象包含一组日志记录选项,作为一个返回MonitorLoggingOptions对象。一个MonitorLoggingOptions对象具有以下属性,您可以访问创建后使用点符号MonitorLogger对象。

    监控数据编写期间,指定为一个正整数。它是集之后的数量数据的传播trainingProgressMonitor对象。例如,如果DataWriteFrequency5然后数据集1 - 5将缓存在内存中,被传送到监控对象在5日的最后一集。这在某些情况下可以提高性能。缺省值是1。

    例子:DataWriteFrequency = 10

    最大数量的事件中,指定为一个正整数。当使用火车,值是自动初始化。设置这个值在使用日志记录器对象在一个定制的培训循环。默认值是500年

    例子:MaxEpisodes = 1000

    回调日志数据集完成后,指定为一个函数处理对象。自动调用指定的函数的训练循环在每集的最后,而且必须返回一个包含数据记录的结构,如经验,模拟信息,或者最初的观察。

    你的函数必须有以下签名。

    函数dataToLog = myEpisodeFinishedFcn(数据)

    在这里,数据是一个结构,包含以下字段:

    • EpisodeCount——当前的事件数量

    • 环境——环境对象

    • 代理——代理对象

    • 经验——结构数组包含经验。这个数组的每个元素对应于一个步骤,是一个包含字段的结构NextObservation,观察,行动,奖励结束

    • EpisodeInfo——包含字段的结构CumulativeReward,StepsTakenInitialObservation

    • SimulationInfo从这一事件——包含模拟信息。为MATLAB环境这是一个结构SimulationError和仿真软件金宝app®环境是一个金宝appSimulink.SimulationOutput对象。

    函数的输出dataToLog是包含要记录到磁盘的数据结构。

    例子:EpisodeFinishedFcn = @myEpLoggingFcn

    回调后日志数据训练步骤完成一集内,指定为一个函数处理对象。自动调用指定的函数的训练循环结束时,每个训练步骤,而且必须返回一个包含数据记录的结构,如例如代理的开发政策的状态。

    你的函数必须有以下签名。

    函数dataToLog = myAgentStepFinishedFcn(数据)

    在这里,数据是一个结构,包含以下字段:

    • EpisodeCount——当前的事件数量

    • AgentStepCount——累积数量的代理所采取的步骤

    • SimulationTime——环境中当前仿真时间

    • 代理——代理对象

    函数的输出dataToLog是包含要记录到磁盘的数据结构。

    多代理的培训,AgentStepFinishedFcn可以是一个功能单元阵列处理尽可能多的元素数量的代理组织。

    请注意

    测井资料使用AgentStepFinishedFcn不支持回调时培训代理与火车的功能金宝app。

    例子:AgentStepFinishedFcn = @myAgtStepLoggingFcn

    回调的日志数据完成后学习子程序,指定为一个函数处理对象。自动调用指定的函数的训练循环结束时,每个学习子例程,并且必须返回一个包含数据记录的结构,如演员的培训损失和评论家网络,或者,基于模型的代理,环境模型训练的损失。

    你的函数必须有以下签名。

    函数dataToLog = myAgentLearnFinishedFcn(数据)

    在这里,数据是一个结构,包含以下字段:

    • EpisodeCount——当前的事件数量

    • AgentStepCount——累积数量的代理所采取的步骤

    • AgentLearnCount——累积学习代理所采取的步骤

    • EnvModelTrainingInfo——结构包含基于模型的代理相关领域TransitionFcnLoss,RewardFcnLossIsDoneFcnLoss

    • 代理——代理对象

    • ActorLoss损失的演员

    • CriticLoss损失的评论家

    函数的输出dataToLog是包含要记录到磁盘的数据结构。

    多代理的培训,AgentLearnFinishedFcn可以是一个功能单元阵列处理尽可能多的元素数量的代理组织。

    例子:AgentLearnFinishedFcn = @myAgtLearnLoggingFcn

    对象的功能

    设置 建立强化学习环境或初始化数据日志记录器对象
    清理 清理强化学习环境或数据记录器对象

    例子

    全部折叠

    这个例子展示了如何登录和可视化数据的窗口trainingProgressMonitor当使用对象火车

    创建一个trainingProgressMonitor对象。创建的对象也打开一个窗口与对象相关。

    监控= trainingProgressMonitor ();

    创建一个MonitorLogger对象使用rlDataLogger

    记录器= rlDataLogger(监控);

    创建日志数据的回调函数(对于这个示例,请参见helper函数部分),并指定相应的回调函数的日志记录器对象。为特定的函数签名函数输入结构的更多信息,见相应的属性MonitorLogger

    记录器。代理LearnFinishedFcn = @myAgentLearnFinishedFcn;

    培训代理商,你现在可以打电话火车,通过日志记录器在以下命令等作为参数。

    trainResult =火车(代理,env、trainOpts记录器=记录器);

    培训进展时,数据将被记录到的训练监控对象,和可视化窗口相关联。

    注意,只有标量数据可以记录与监控日志记录器对象。

    示例日志功能

    定义一个日志功能,日志数据定期的完成学习子例程。这个函数会被自动调用训练循环结束时,每个学习子例程,并且必须返回一个包含学习相关数据记录的结构,如演员的培训损失和评论家网络,或者,基于模型的代理,环境模型训练的损失。

    函数dataToLog = myAgentLearnFinishedFcn(数据)如果国防部(数据。代理LearnCount, 2) == 0 dataToLog.ActorLoss = data.ActorLoss; dataToLog.CriticLoss = data.CriticLoss;其他的dataToLog = [];结束结束

    限制

    • 只支持标量数据,记录数据金宝appMonitorLogger对象。返回的结构与标量数据回调函数必须包含字段。

    • 恢复的训练从先前的训练结果不支持当日志数据金宝appMonitorLogger对象。

    版本历史

    介绍了R2022b