Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为TensorFlow重塑健身房阵列_Python_Tensorflow_Reinforcement Learning_Tflearn_Openai Gym - Fatal编程技术网

Python 为TensorFlow重塑健身房阵列

Python 为TensorFlow重塑健身房阵列,python,tensorflow,reinforcement-learning,tflearn,openai-gym,Python,Tensorflow,Reinforcement Learning,Tflearn,Openai Gym,我正在学习如何使用健身房环境来训练用TFLearn构建的深度学习模型 目前,我的观察序列的形状如下:(210、160、3) 关于重塑该阵列以便将其用于TensorFlow分类模型的最佳方法的任何建议?标准方法(如DeepMing所述)为: 将其转换为灰度,以(210160)结束。在这里,你最好检查一下,没有有用的信息丢失,在一些游戏中可能会发生这种情况。(例如,球变成与背景相同的“颜色”)。在这里,您可以使用以下内容: processed=np.mean(第2帧,keepdims=False)

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

目前,我的观察序列的形状如下:
(210、160、3)

关于重塑该阵列以便将其用于TensorFlow分类模型的最佳方法的任何建议?

标准方法(如DeepMing所述)为:

  • 将其转换为灰度,以(210160)结束。在这里,你最好检查一下,没有有用的信息丢失,在一些游戏中可能会发生这种情况。(例如,球变成与背景相同的“颜色”)。在这里,您可以使用以下内容:

    processed=np.mean(第2帧,keepdims=False)

  • 向下采样至(110,84)。在这里,您可以使用OpenCV或任何其他方便的库:

    resized=cv2.resize(已处理(110,84),插值=cv2.CV\u INTER\u LINEAR)

  • 裁剪屏幕中央部分(84,84)

    result=resized[13:97]

  • 尽管DeepMind论文中描述了这一点,但您可以使用更方便但仍然有效的程序,如:

  • 转换为灰度:

    processed=np.mean(第2帧,keepdims=False)

  • 作物中心部分:

    crapped=processed[35:195]

  • 按2的因子进行下采样,得到(80,80)图像:

    result=crapped[::2,::2]

  • Andrej Karpathy在他的研究中也采用了类似的方法

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

    处理完图像后,可以将其馈送至卷积网络,或将其展平至一维阵列,然后馈送至完全连接的网络


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

    请注意,Gym本身有一个
    AtariPreprocessing
    包装器,可用于预处理Atari环境。我相信包装纸的作用与Asakruukin提到的DQN纸类似

    您可以这样使用它:

    导入健身房
    从gym.wrappers导入或重新处理
    环境=健身房品牌('Pong-v0')
    env=AtariPreprocessing(env,frame_skip=1)
    

    有关包装器的更多信息,请访问。

    非常感谢,我将查看博客和文章!为什么你要裁剪中心部分,并且知道你需要的正是
    [35:195]
    @SebM这是Karpathy在他的博客中使用的,但是你可以使用不同的区域,这对你更有效,或者根本不裁剪,只需减少样本。这种想法是,在许多游戏中,顶部和底部区域不包含有用的信息,主要动作发生在靠近中心的地方。因此,在训练图像之前,您应该始终检查已处理的输出,以确保没有丢失任何有用的信息。