主要内容

FileLogger

垫文件日志强化学习训练数据

自从R2022b

    描述

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

    请注意

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

    请注意

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

    创建

    创建一个FileLogger对象使用rlDataLogger没有任何输入参数。

    属性

    全部展开

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

    名称或日志目录的完全限定路径,指定为一个字符串或一个字符数组。这是垫的目录的名称包含记录数据保存的文件。缺省情况下,子目录日志创建在当前文件夹中设置和文件保存在训练。

    例子:LoggingDirectory = mylogs

    规则名称垫文件,指定为一个字符串或一个字符数组。例如,命名规则“集< id >”结果在文件名称episode001.mat,episode002.mat等等。

    例子:FileNameRule = " ThirdRun < id >”

    垫文件版本,指定为一个字符串或字符数组。默认值是“v7”。有关更多信息,请参见MAT-File版本

    例子:Version = " -v7.3 "

    选择保存数据时使用压缩垫文件,指定为一个逻辑变量。默认值是真正的。有关更多信息,请参见MAT-File版本

    例子:UseCompression = false

    磁盘数据编写期间,指定为一个正整数。它是集之后的数量数据保存到磁盘。例如,如果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

    对象的功能

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

    例子

    全部折叠

    这个例子展示了如何日志数据到磁盘在使用火车

    创建一个FileLogger对象使用rlDataLogger

    记录器= rlDataLogger ();

    指定一个目录来保存记录数据。

    logger.LoggingOptions。LoggingDirectory =“myDataLog”;

    创建日志数据的回调函数(对于这个示例,请参见helper函数部分),并指定相应的回调函数的日志记录器对象。

    记录器。EpisodeFinishedFcn = @myEpisodeFinishedFcn;记录器。代理StepFinishedFcn = @myAgentStepFinishedFcn; logger.AgentLearnFinishedFcn = @myAgentLearnFinishedFcn;

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

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

    培训进展时,数据将被记录到指定的目录,根据规则中指定的FileNameRule的属性logger.LoggingOptions

    logger.LoggingOptions.FileNameRule
    ans = " loggedData < id >”

    示例日志功能

    集完成日志记录功能。这个函数会被自动调用训练循环在每集的最后,而且必须返回一个包含episode-related数据日志的结构,如经验,模拟信息,或者最初的观察。

    函数dataToLog = myEpisodeFinishedFcn dataToLog(数据)。经验= data.Experience;结束

    代理步骤完成日志功能。这个函数会被自动调用训练循环结束时,每个训练步骤,而且必须返回一个包含step-related数据日志的结构,如例如代理探索政策的国家。

    函数dataToLog = myAgentStepFinishedFcn dataToLog(数据)。状态= getState (getExplorationPolicy (data.Agent));结束

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

    函数dataToLog = myAgentLearnFinishedFcn dataToLog(数据)。ActorLoss = data.ActorLoss;dataToLog。CriticLoss= data.CriticLoss;结束

    为特定的函数签名函数输入结构的更多信息,见相应的属性FileLogger。一个相关的例子,看到日志训练数据到磁盘

    这个例子展示了如何记录数据到磁盘时培训代理使用自定义循环。

    创建一个FileLogger对象使用rlDataLogger

    flgr = rlDataLogger ();

    设置日志记录器对象。这个操作初始化对象执行安装任务,比如,例如,创建一个目录来保存数据文件。

    设置(flgr);

    在自定义训练循环中,您现在可以存储数据日志记录器对象内存和数据写入文件。

    对于这个示例,商店随机数文件日志记录器对象,分组变量Context1Context2。问题写命令时,垫文件对应一个包含这两个变量的迭代和保存中指定的名称flgr.LoggingOptions.FileNameRule,在指定的文件夹中flgr.LoggingOptions.LoggingDirectory

    iter = 1:10%三个随机数字存储在内存中%的元素变量“Context1”ct = 1:3商店(flgr“Context1”兰德,iter);结束%在内存中存储一个随机数%的变量“Context2”存储(flgr,“Context2”兰德,iter);每4迭代%写入数据文件如果国防部(iter 4) = = 0写(flgr);结束结束

    清理日志记录器对象。这个操作执行清理任务比如文件写入任何数据仍然在内存中。

    清理(flgr);

    限制

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

    版本历史

    介绍了R2022b