Deep learning DQN-如何将游戏中4个静止帧的输入作为单个状态输入

Deep learning DQN-如何将游戏中4个静止帧的输入作为单个状态输入,deep-learning,reinforcement-learning,q-learning,Deep Learning,Reinforcement Learning,Q Learning,我在读这篇博客 1-在博客的输入部分,我想知道如何将游戏中代表输入状态的4个静止帧/屏幕截图输入到策略网络中?是否所有4帧都将以一个平坦张量馈送(其中一个图像结束,下一个图像开始,形成一个连续的行输入,以一个张量)?还是将它们一个接一个地分别送入网络 2-对于预处理图像,我们是否避免使用最大池阶段?我的理解是,这个过程消除了图像特征识别中对空间/位置识别的需要。而在普通Conv网络中,这对于识别图像特征非常重要,无论它们在空间和距离上出现在何处(因此我们使用最大池)。在游戏Q-学习中,图像上不同

我在读这篇博客

1-在博客的输入部分,我想知道如何将游戏中代表输入状态的4个静止帧/屏幕截图输入到策略网络中?是否所有4帧都将以一个平坦张量馈送(其中一个图像结束,下一个图像开始,形成一个连续的行输入,以一个张量)?还是将它们一个接一个地分别送入网络

2-对于预处理图像,我们是否避免使用最大池阶段?我的理解是,这个过程消除了图像特征识别中对空间/位置识别的需要。而在普通Conv网络中,这对于识别图像特征非常重要,无论它们在空间和距离上出现在何处(因此我们使用最大池)。在游戏Q-学习中,图像上不同元素的空间/位置很重要。因此,我们从预处理阶段删除了最大池的使用。这是正确的吗

3-有谁能推荐一个好的深度Q-learning实现资源,从头开始编写(Python),即不使用现成的库,如PyTorch、Keras和Scikit learn…等,用于需要从游戏中输入图像帧的游戏。我在想,也许从头开始实现模型可以更好地控制超参数的定制和微调。还是使用现成的库更好?这方面的任何代码实现都会非常有用

非常感谢

  • 不,典型的方法是堆叠(灰度)帧,以便输入形状成为
    [高度、宽度、数量帧]
    ,即帧承担通常为RGB图像中的颜色通道保留的角色。这使得应用二维卷积变得很容易

  • 是的,没错。您不使用池,因为您不想丢弃有关空间位置的信息

  • 我反对这种特殊的做法。相反,我建议您熟悉函数逼近器的所有构建块(至少在概念层面)。这可能意味着回到mnist研究CNN的组成部分。之后,您可能不想从头开始实现所有功能。以下是我发现非常有用的一篇博文:


  • 非常感谢你的回答,克里斯。只是为了澄清并确保我理解你对问题1的回答。因此,我们使用通常为颜色通道RGB保留的轴来表示帧数。但是,由于我们对CNN的图像进行了灰色缩放,因此我们不需要RGB颜色。很好,这很有意义。关于问题3,我读了一些关于CNN如何运作的文章。是的,你说得对。想想看,CNN比简单的ANN复杂得多,所以最好使用库。非常感谢你分享这篇文章。非常感谢你的帮助,不客气!至于你的第一个评论,是的,灰度缩放将通道压缩为一个通道,然后叠加为多个“通道”。如果我们有RGB帧呢?我们是否仍然在通道级别堆叠它们以获得
    [高度、宽度、3*num_帧]
    ?@JosepJoestar是的,这是最容易实现的。另一种方法可能是沿批处理轴进行连接,然后在卷积后进行重塑。。我能想到的唯一额外好处是,您可能能够重用来自不同任务(转移学习)的一些预训练卷积层。但我会按照你的建议在通道轴上连接。