Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 自定义RL环境的意外操作分布_Python_Reinforcement Learning_Stable Baselines - Fatal编程技术网

Python 自定义RL环境的意外操作分布

Python 自定义RL环境的意外操作分布,python,reinforcement-learning,stable-baselines,Python,Reinforcement Learning,Stable Baselines,我正在创建一个定制环境,并培训RL代理 我之所以使用稳定的基线,是因为它似乎实现了所有最新的RL算法,并且似乎尽可能接近“即插即用”(我想集中精力创建环境和奖励功能,而不是模型本身的实现细节) 我的环境有一个大小为127的动作空间,并将其解释为一个热向量:将向量中最高值的索引作为输入值。 为了进行调试,我创建了一个条形图,显示每个值被“调用”的次数 在培训之前,我希望图表显示“事件”的大致均匀分布: 但相反,行动规范下端的“事件”比其他事件更有可能发生: 我创建了一个解释和复制该问题的 我问

我正在创建一个定制环境,并培训RL代理

我之所以使用稳定的基线,是因为它似乎实现了所有最新的RL算法,并且似乎尽可能接近“即插即用”(我想集中精力创建环境和奖励功能,而不是模型本身的实现细节)

我的环境有一个大小为127的动作空间,并将其解释为一个热向量:将向量中最高值的索引作为输入值。 为了进行调试,我创建了一个条形图,显示每个值被“调用”的次数

在培训之前,我希望图表显示“事件”的大致均匀分布:

但相反,行动规范下端的“事件”比其他事件更有可能发生:

我创建了一个解释和复制该问题的

我问了一个问题,但他们建议我在这里发布这个问题。模型。预测(obs)将每个动作剪辑到范围
[-1,1]
(因为这就是您定义动作空间的方式)。 因此,您的操作值数组看起来像

打印(操作)
# [-0.2476,  0.7068,  1.,          -1.,           1.,           1., 
#   0.1005,  -0.937,   -1. , ...]
也就是说,所有大于1的操作都被截断/剪裁为1,因此存在多个最大操作。 在您的环境中,您计算numpy argmax
pitch=np.argmax(action)
,它返回第一个最大值的索引,而不是随机选择的索引(如果存在多个最大值)

您可以选择一个“随机argmax”,如下所示

max_indeces = np.where(action == action.max())[0]
any_argmax = np.random.choice(max_indeces)
我相应地改变了你的环境