getValue

得到估计值函数表示

描述

例子

价值= getValue (valueRep,奥林匹克广播服务公司)返回状态值函数表示的估计值函数valueRep鉴于环境观测奥林匹克广播服务公司.

例子

价值= getValue (qValueRep,奥林匹克广播服务公司)返回多个q值函数表示的估计状态动作值函数qValueRep鉴于环境观测奥林匹克广播服务公司.在这种情况下,qValueRep有尽可能多的输出有可能离散的行动,和getValue返回每个操作的状态值函数。

例子

价值= getValue (qValueRep,奥林匹克广播服务公司,行为)返回单输出q值函数表示的估计状态动作值函数qValueRep鉴于环境观测奥林匹克广播服务公司和行动行为.在这种情况下,getValue返回给定观察和操作输入的状态值函数。

(价值,状态]= getValue (___)返回表示的状态。在以下情况下使用此语法valueRepqValueRep是一个递归神经网络。

例子

全部折叠

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

env = rlPredefinedEnv (“CartPole-Discrete”);obsInfo = getObservationInfo (env);actInfo = getActionInfo (env);numObs = obsInfo.Dimension (1);numDiscreteAct =元素个数(actInfo.Elements);

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

关键网络= [imageInputLayer([4 11 1]),“归一化”,“没有”,“名字”,“状态”)fullyConnectedLayer (8,“名字”,“俱乐部”)reluLayer (“名字”,“relu”)fullyConnectedLayer (1,“名字”,“输出”));

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

criticOptions = rlRepresentationOptions (“LearnRate”1飞行,“GradientThreshold”1);评论家= rlValueRepresentation (criticNetwork obsInfo,...“观察”,“状态”,criticOptions);

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

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

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

batchVal = getValue(评论家,{兰德(4 1 20)});大小(batchVal)
ans =1×21 20

valBatch为批中的每个观察值包含一个值函数估计值。

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

env = rlPredefinedEnv (“CartPole-Discrete”);obsInfo = getObservationInfo (env);actInfo = getActionInfo (env);numObs = obsInfo.Dimension (1);numDiscreteAct =元素个数(actInfo.Elements);

创建一个用于多输出q值函数表示的深度神经网络。

关键网络= [imageInputLayer([4 11 1]),“归一化”,“没有”,“名字”,“状态”)fullyConnectedLayer (50,“名字”,“CriticStateFC1”)reluLayer (“名字”,“CriticRelu1”)fullyConnectedLayer (20“名字”,“CriticStateFC2”)reluLayer (“名字”,“CriticRelu2”)fullyConnectedLayer (numDiscreteAct“名字”,“输出”));

使用循环神经网络为您的批评家创建一个表示。

criticOptions = rlRepresentationOptions (“LearnRate”1 e - 3,“GradientThreshold”1);评论家= rlQValueRepresentation (criticNetwork obsInfo actInfo,...“观察”,“状态”,criticOptions);

使用随机观察获得每个可能的离散操作的值函数估计值。

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

瓦尔包含两个值函数估计,一个用于每个可能的离散操作。

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

batchVal = getValue(评论家,{兰德(4 1 10)});大小(batchVal)
ans =1×22 10

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

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

obsinfo = [rlNumericSpec([8 3]), rlNumericSpec([4 1])];

创建动作规范。

actinfo = rlNumericSpec([2 1]);

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

observationPath1 = [imageInputLayer([8 3 1]),“归一化”,“没有”,“名字”,“state1”)fullyConnectedLayer (10“名字”,“fc1”)additionLayer (3“名字”,“添加”)reluLayer (“名字”,“relu1”)fullyConnectedLayer (10“名字”,“fc4”)reluLayer (“名字”,“relu2”)fullyConnectedLayer (1,“名字”,“fc5”));observationPath2 = [imageInputLayer([4 11 1]),“归一化”,“没有”,“名字”,“state2”)fullyConnectedLayer (10“名字”,“取得”));actionPath = [imageInputLayer([2 11 1]),“归一化”,“没有”,“名字”,“行动”);fullyConnectedLayer (10,“名字”,“一个fc3”文件));网= layerGraph (observationPath1);网= addLayers(净,observationPath2);网= addLayers(净,actionPath);网= connectLayers(网络,“取得”,“添加/ in2”);网= connectLayers(网络,“一个fc3”文件,“添加/ in3”);

使用这个网络创建批评家表示。

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

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

batchobs_ch1 =兰德(8,64);batchobs_ch2 =兰德(4,64);

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

batchact =兰德(2,1,64,(1);

获取批量观察和操作的状态-操作值函数估计值。

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

输入参数

全部折叠

值函数表示,指定为rlValueRepresentation对象。

q值函数表示,指定为anrlQValueRepresentation对象。

环境观测,指定为一个单元数组,其中元素的个数与观测输入通道的个数相同。的每个元素奥林匹克广播服务公司包含用于单个观测输入通道的观测数组。

中的每个元素的维数奥林匹克广播服务公司O——- - - - - -lB——- - - - - -l年代,地点:

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

  • lB为批大小。要指定单个观察,请设置lB= 1。要指定一批观察结果,请指定lB> 1。如果valueRepqValueRep有多个观察输入通道,那么lB的所有元素都必须相同奥林匹克广播服务公司.

  • l年代指定一个递归神经网络的序列长度。如果valueRepqValueRep那么不使用递归神经网络呢l年代= 1。如果valueRepqValueRep有多个观察输入通道,那么l年代的所有元素都必须相同奥林匹克广播服务公司.

lBl年代两者必须相同吗行为奥林匹克广播服务公司.

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

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

  • 一个对应于相关操作规范的维度。

  • lB为批大小。要指定单个观察,请设置lB= 1。要指定一批观察结果,请指定lB> 1。

  • l年代指定一个递归神经网络的序列长度。如果valueRepqValueRep那么不使用递归神经网络呢l年代= 1。

lBl年代两者必须相同吗行为奥林匹克广播服务公司.

输出参数

全部折叠

估计值函数,以数组的形式返回N——- - - - - -lB——- - - - - -l年代,地点:

  • N是评论家网络的输出数量。

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

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

    • 用于多输出状态动作值表示(qValueRep),N是离散动作的个数。

  • lB为批大小。

  • l年代为递归神经网络的序列长度。

递归神经网络的表示状态,以单元数组形式返回。如果valueRepqValueRep那么不使用递归神经网络呢状态是一个空单元格数组。

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

valueRep =设置状态(valueRep状态);

介绍了R2020a