Karpathy 的代码训练神经网络使用策略梯度来玩 Pong

Karpathy's code training neural net to play Pong using Policy Gradients

我正在看 Andrej Karpathy 的 "Training a Neural Network ATARI Pong agent with Policy Gradients from raw pixels" https://gist.github.com/karpathy/a4166c7fe253700972fcbc77e4ea32c5 。我不是 Python 人,所以我想在 Matlab 中编写这段代码。我有两个问题。

问题 1:我注意到 xshsdlogpsdrs 被初始化为 [],[],[],[](第 67 行)并重置为[],[],[],[] 每集之后(第 103 行)。但是 epxephepdlogpepr 既没有初始化也没有重置。它们似乎永远在增长(第 99-102 行)。我对么?我不熟悉 np.vstack.

的细微差别

问题 2:如果我的游戏有向上、向下、向右和向左的玩家移动选项,我需要如何修改此代码才能使其正常工作(除了对输出层中 4 个节点的明显修改之外)?

谢谢。

我认为您在想象 numpy.vstackdoesn't have 的细微差别。您链接到的代码的第 99-102 行 vstack 函数的结果分配给相关变量。 任何先前的值这些变量将被替换。

epx = np.vstack(xs)
eph = np.vstack(hs)
epdlogp = np.vstack(dlogps)
epr = np.vstack(drs)

对于你问题的第二部分,我认为你需要尝试一些东西,如果它不起作用,请提出一个新问题来说明你已经尝试过的方法。