我正在阅读有关Deep Q-Learning的博客。
1-在博客的[]
部分中,我想知道我们如何将游戏中代表输入状态的4个静止帧/屏幕截图输入到Policy网络中?是否将所有4帧以一个展平的张量馈送(其中一幅图像结束,下一幅图像开始,在一个张量中形成连续的行输入)?还是将它们一个接一个地分别喂入网络?
2-对于预处理图像,我们是否避免使用最大合并阶段?我的理解是,此过程消除了图像特征识别中对空间/位置识别的需求。在普通的Conv-Net中,这对于识别图像特征非常重要,无论它们出现在空间和距离的什么位置(因此我们使用最大池)。在游戏的Q学习中,图像上不同元素的空间/位置很重要。因此,我们从预处理阶段中删除了最大池化的使用。这是正确的吗?
3-谁能推荐一个很好的深度Q学习实现资源,该资源是从头开始编写的(在Python中),即不使用现成的库,例如PyTorch,Keras和Scikit-learn ..等等,对于游戏,需要将游戏的图像帧作为状态输入。我在想,也许从头开始实现模型可以更好地控制自定义和对超参数的微调。还是使用现成的库更好?任何对此的代码实现都将非常有帮助。
非常感谢。
答案 0 :(得分:1)
否,典型的方法是堆叠(灰阶的)帧,以使输入形状变为[height, width, num_frames]
,即,这些帧承担通常为颜色通道保留的角色。 RGB图像。这样可以轻松地应用2D卷积。
是的,这是正确的。您不使用池,因为您不想丢弃有关空间位置的信息。
我建议不要使用这种特定方法。相反,我建议您熟悉函数逼近器的所有构造块(至少在概念层面上)。这可能意味着回到mnist研究CNN的组成部分。之后,您可能不想从头开始实现所有功能。这是我发现非常有用的博客文章: