Python 限制每个时间步的RNN合法输出

Python 限制每个时间步的RNN合法输出,python,tensorflow,keras,lstm,recurrent-neural-network,Python,Tensorflow,Keras,Lstm,Recurrent Neural Network,我正在尝试为纸牌游戏做一个RNN预测动作。在每个时间步中,只有某些动作是合法的(即某些动作在某些情况下无法进行) 因此,在整个游戏的任何给定点上,12个动作中有一个是正确的。每次移动都标记为0到11范围内的整数。在大多数情况下,只有一小部分是真正合法的行动。假设我试着训练模型,它预测了一种情况下的移动4,但是此时只有移动2、3和9是合法的。完成此移动后,下一时间步允许使用不同的子集。我如何让它仅从一部分动作中预测 我还没有开始编写模型,但我打算在Python中使用Keras/TensorFlow

我正在尝试为纸牌游戏做一个RNN预测动作。在每个时间步中,只有某些动作是合法的(即某些动作在某些情况下无法进行)

因此,在整个游戏的任何给定点上,12个动作中有一个是正确的。每次移动都标记为0到11范围内的整数。在大多数情况下,只有一小部分是真正合法的行动。假设我试着训练模型,它预测了一种情况下的移动4,但是此时只有移动2、3和9是合法的。完成此移动后,下一时间步允许使用不同的子集。我如何让它仅从一部分动作中预测

我还没有开始编写模型,但我打算在Python中使用Keras/TensorFlow LSTM来完成这项工作


如果你能给我指出一个好的方向,我会很高兴的

您可以添加一个掩码作为调用模型的参数


但最简单的方法是将预测作为所有动作的概率,然后忽略那些不允许的动作。

谢谢,是的,最后一个提示也是我所想的。这让我有点担心训练,因为经常接受概率较低的答案可能会使预测不准确。然而,考虑到这一点,它甚至可能会加强这些情况下的选择,所以我认为值得一试。