python - 为 TensorFlow reshape Gym 数组

标签 python tensorflow reinforcement-learning tflearn openai-gym

我正在学习如何使用 Gym 环境来训练使用 TFLearn 构建的深度学习模型。

目前我的观察数组具有以下形状:(210, 160, 3)

关于 reshape 此数组以便将其用于 TensorFlow 分类模型的最佳方法有什么建议吗?

最佳答案

标准方法(如 DeepMing 的 DQN paper 中所述)是:

  1. 将其转换为灰度,最终得到 (210,160)。在这里您最好检查是否丢失了有用的信息,在某些游戏中可能会发生这种情况。 (例如,球的“颜色”与背景相同)。在这里你可以使用类似的东西:

    processed = np.mean(frame,2,keepdims = False)

  2. 将采样降低到 (110,84)。在这里您可以使用 OpenCV 或任何其他方便的库:

    调整大小 = cv2.resize(已处理, (110,84),插值 = cv2.CV_INTER_LINEAR)

  3. 裁剪屏幕的中央部分 (84,84)

    结果 = 调整大小[13:97]

虽然,这在 DeepMind 论文中有所描述,您可以使用更方便但仍然有效的程序,例如:

  1. 转换为灰度:

    processed = np.mean(frame,2,keepdims = False)

  2. 裁剪中心部分:

    裁剪 = 已处理[35:195]

  3. 将采样缩小 2 倍并得到 (80,80) 图像:

    结果 = 裁剪[::2,::2]

Andrej Karpathy 在他的 blog 中使用了类似的方法。

您还可以使用其他尺寸、转换为二进制图像而不是灰度图像或任何更适合您的应用程序的图像。

处理完图像后,您可以将其输入卷积网络或展平为一维数组并输入全连接网络。

使用多个帧(通常是 4 个)的堆栈作为网络输入以及跳帧(在拍摄一帧后跳过接下来的 3 帧)也很有用,因为它们通常不包含太多有用的信息。

关于python - 为 TensorFlow reshape Gym 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49621599/

相关文章:

tensorflow - 没有用于 TIFF 图像的 Tensorflow 解码器?

python - 在 python 中记录/存储强化学习实验的结果/指标的好方法?

python - 程序卡在 while 循环不打印

python - 为什么我的 .after 没有按预期工作?

python Pandas : Drop ongoing values from column

python - Tensorflow 上的多元回归

machine-learning - variable_ops_scope和variable_scope有什么区别?

python - 如何在批量学习中为 tf-agents 定义正确的形状

python - Net在训练过程中不改变权重,pytorch

python - 将 "fake"模型条目添加到管理索引