主要内容

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);

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

批评家= [featureInputLayer(4,“归一化”“没有”“名字”“状态”) 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值函数表示创建一个深度神经网络。

批评家= [featureInputLayer(4,“归一化”“没有”“名字”“状态”) 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 =2x1单列向量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 1 1],],“归一化”“没有”“名字”“state2”) fullyConnectedLayer (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 =兰德(8,64);batchobs_ch2 =兰德(4,64);

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

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

获取一批观测和操作的状态-动作值函数估计。

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

输入参数

全部折叠

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

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

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

每个元素的尺寸奥林匹克广播服务公司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