【发布时间】:2021-01-16 03:49:01
【问题描述】:
我正在尝试为自动驾驶车辆实施 DRL(深度强化学习)代理。我目前正在教我的代理不要撞到其他汽车,使用简单的摄像头。有很多方法可以加快训练速度,但目前我的重点是在我的观察中添加运动感。
互联网上的每个人(包括谷歌关于 Atari 游戏的文章)都提到,为了在观察中添加运动是 捕获 3-4 帧,而不是 1 并将它们作为一个输入 QNetwork观察。但是,这在使用相机数据时不太实用,因为它需要大量的计算能力来训练代理。例如:
假设您使用分辨率为 256x256 的灰度相机,而我们使用一个简单的统一回放内存,最多可容纳 20000 个观测值。那么,内存中存储的像素数为:
20000 (Samples) * 4 (Frames) * 256 (Width) * 256 (Height) = 5.2 GB of Physical RAM.
另外,假设您使用 64 个观察值的批大小来为代理提供数据,该代理在第一层包含 32 个过滤器的 CNN,那么您需要:
64 (Batch Size) * (4 Frames) * 256 (Width) * 256 (Height) * 32 (Filters) = 0.5 GB of GPU.
代理需要为 1 个简单的灰度相机处理大量数据,只是为了增加运动感。
我正在考虑另一种添加运动感的方法,但是,我在互联网上找不到任何关于它的信息。既然我们已经知道了车辆的速度,那么我们可以喂给代理:
- 1 帧包含相机数据。
- 1 帧在图像中心包含车辆速度的归一化值(例如,在图像中心保留一个 32x32 的窗口,其中包含车辆的归一化速度 (0.0-1.0),其余像素具有0 的值。
这样,我们将数据的大小减少了一半。您认为这可能是一个好方法吗?
【问题讨论】:
标签: tensorflow openai-gym motion dqn