主要内容

getValue

获取估计值函数表示

描述

例子

价值= getValue (valueRepobs.返回状态值函数表示的估计值函数valueRep给定环境观察obs.

例子

价值= getValue (qValueRepobs.返回多个q值函数表示的估计状态-动作值函数qValueRep给定环境观察obs..在这种情况下,qValueRep具有多种输出,因为有可能的离散动作,以及getValue为每个动作返回状态值函数。

例子

价值= getValue (qValueRepobs.行为返回单输出Q值函数表示的估计状态操作值函数qValueRep给定环境观察obs.和行动行为.在这种情况下,getValue返回给定观察和操作输入的状态值函数。

价值状态] = getValue(___返回表示的状态。在以下情况下使用此语法valueRep或者qValueRep是一种递归神经网络。

例子

全部收缩

创造环境,获取观察和行动信息。

env = rlPredefinedEnv (“CartPole-Discrete”);ObsInfo = GetobservationInfo(ENV);Actinfo = GetActionInfo(Env);numobs = obsinfo.dimension(1);numdiscreteact = numel(Actinfo.Elements);

为评论家创建一个深层神经网络。

[featureInputLayer(4,'正常化'“没有”“名字”'状态')全连接列(8,“名字”'fc') reluLayer (“名字”'relu') fullyConnectedLayer (1,“名字”“输出”));

为批评创建一个值函数表示对象。

QuandOptions = rlrepresentationOptions(“LearnRate”1飞行,'gradientthreshold',1);评论家= rlvalueerepresentation(批判性,Obsinfo,...“观察”'状态',批评);

获得一个随机单次观测的值函数估计。使用与观察规范相同尺寸的观察数组。

val = getValue(评论家,{兰德(4,1)})
val =-0.0899

您还可以获得一批观察数据的值函数估计值。例如,获得批量的20个观察的值函数。

Batchval = GetValue(评论家,{rand(4,1,20)});大小(批量)
ans =.1×21 20

valbatch.包含批处理中每个观测的一个值函数估计。

创造环境,获取观察和行动信息。

env = rlPredefinedEnv (“CartPole-Discrete”);ObsInfo = GetobservationInfo(ENV);Actinfo = GetActionInfo(Env);numobs = obsinfo.dimension(1);numdiscreteact = numel(Actinfo.Elements);

为多输出Q值函数表示创建一个深度神经网络。

[featureInputLayer(4,'正常化'“没有”“名字”'状态') fullyConnectedLayer (50,“名字”'批评福尔福克') reluLayer (“名字”'rictrelu1') fullyConnectedLayer (20“名字”'批评福尔2') reluLayer (“名字”'transrelu2') fullyConnectedLayer (numDiscreteAct“名字”“输出”));

使用经常性神经网络创建评论家的代表。

QuandOptions = rlrepresentationOptions(“LearnRate”1 e - 3,'gradientthreshold',1);评论家= rlqvalueerepresentation(批评,undernfo,Actinfo,...“观察”'状态',批评);

利用随机观测获得每个可能的离散行动的值函数估计。

val = getValue(评论家,{兰德(4,1)})
val =2x1单列向量0.0139 -0.1851

包含两个值函数估计,每个可能的离散动作一个。

您还可以获得一批观察数据的值函数估计值。例如,获得一批10个观测值的值函数估计。

Batchval = getValue(评论家,{rand(4,1,10)});大小(批量)
ans =.1×22 10

batchVal包含批次中每个观察的两个值函数估计值。

为两个观察输入通道创建观察规范。

ObsInfo = [rlnumericspec([8 3]),rlnumericspec([4 1])];

创建动作规范。

actinfo = rlNumericSpec([2 1]);

为评论家创建一个深层神经网络。这个网络有三个输入通道(两个用于观察,一个用于行动)。

develationpath1 = [imageInputLayer([8 3 1],'正常化'“没有”“名字”“state1”)全连接层(10,“名字”“fc1”)附加层(3,“名字”“添加”) reluLayer (“名字”'relu1')全连接层(10,“名字”“fc4”) reluLayer (“名字”“relu2”) fullyConnectedLayer (1,“名字”“fc5”));deviemationPath2 = [ImageInputLayer([4 1 1],'正常化'“没有”“名字”“state2”)全连接层(10,“名字”“取得”));ActionPath = [ImageInputLayer([2 1 1],'正常化'“没有”“名字”“行动”);fullyConnectedLayer (10,“名字”“一个fc3”文件));网= layerGraph (observationPath1);网= addLayers(净,observationPath2);网= addLayers(净,actionPath);网= connectLayers(网络,“取得”'添加/ in2');网= connectLayers(网络,“一个fc3”文件“添加/ in3”);

使用此网络创建批评批读表示。

c = rlQValueRepresentation(净obsinfo actinfo,...“观察”,{“state1”“state2”},'行动',{“行动”});

为每个通道创建批量大小为64的随机观察集。

batchobs_ch1 = rand(8,3,64);batchobs_ch2 = rand(4,1,64);

创建批量大小为64的随机动作集。

Batchact = Rand(2,1,64,1);

获得该批观测和动作的状态-动作值函数估计。

qvalue = getValue (c, {batchobs_ch1, batchobs_ch2}, {batchact});

输入参数

全部收缩

值函数表示,指定为rlValueRepresentation目的。

Q值函数表示,指定为rlQValueRepresentation目的。

环境观测,指定为具有与观测输入通道相同数量的元素的单元数组。的每个元素obs.包含单个观测输入通道的观测数组。

每个元素的尺寸obs.O-经过-lB-经过-l年代,地点:

  • O对应于相关观测输入通道的尺寸。

  • lB是批大小。要指定单个观察,集合lB= 1.要指定一批观察,请指定lB> 1。如果valueRep或者qValueRep有多个观察输入通道,然后lB对所有元素必须相同obs.

  • l年代指定经常性神经网络的序列长度。如果valueRep或者qValueRep那么不使用递归神经网络呢l年代= 1。如果valueRep或者qValueRep有多个观察输入通道,然后l年代对所有元素必须相同obs.

lBl年代两者都必须相同行为obs.

操作,指定为包含操作值数组的单元素单元格数组。

这个数组的维数是一个-经过-lB-经过-l年代,地点:

  • 一个对应于相关动作规范的尺寸。

  • lB是批大小。要指定单个观察,集合lB= 1.要指定一批观察,请指定lB> 1。

  • l年代指定经常性神经网络的序列长度。如果valueRep或者qValueRep那么不使用递归神经网络呢l年代= 1。

lBl年代两者都必须相同行为obs.

输出参数

全部收缩

估计值函数,用尺寸作为数组返回N-经过-lB-经过-l年代,地点:

  • N是批评网络的产出数量。

    • 对于状态值表示(valueRep),N= 1。

    • 对于单输出的状态-动作值表示(qValueRep),N= 1。

    • 对于多输出状态 - 动作值表示(qValueRep),N是离散行动的数量。

  • lB是批大小。

  • l年代是经常性神经网络的序列长度。

作为单元数组返回的递归神经网络的表示状态。如果valueRep或者qValueRep那么不使用递归神经网络呢状态是一个空的单元格阵列。

您可以将表示的状态设置为状态使用设置状态函数。例如:

valueRep =设置状态(valueRep状态);
在R2020A中介​​绍