我正在为一个开放的健身房环境建造一个DQN。我的观察空间只有1个离散值,但我的动作是:
self.action_space = (Discrete(3), Box(-100, 100, (1,)))
例:[1,56],[0,24],[2,-78]
我目前的神经网络是:
model = Sequential()
model.add(Dense(24, activation='relu', input_shape=states)) # (1,)
model.add(Dense(24, activation='relu'))
model.add(Dense(2, activation='linear'))
(我从一个只输出[0,1]范围内1个离散值的教程中复制了它)
我知道我需要改变神经网络的最后一层,但在我的情况下会是什么
我猜最后一层应该有3个二进制输出和1个连续输出,但我不知道 如果可能在同一层中有不同性质的输出
正如您在评论中已经指出的,由于DQN的工作方式,DQN与连续动作空间不兼容
argmax of "a" for Q(s,a)
-当a
连续时,不可能检查Q(s,a)
中的所有a
话虽如此,当将此应用于策略梯度方法(与连续动作空间兼容的方法)时,您将在问题中遇到相同的问题,因为对于策略梯度,您需要为您采取的每个动作提供概率。类似这样的方法可能会奏效:
取前两个输出的softmax,给出离散值,然后取第三个连续输出,这将给出您的操作。然后,您需要导出该动作的概率,该概率由您所有输出的组合概率给出
相关问题 更多 >
编程相关推荐