Как изменить пример A3C Tensorflow, чтобы играть в игры Atari? - PullRequest
0 голосов
/ 24 февраля 2019

Я следовал учебному пособию Tensorflow , в котором реализован A3C, чтобы добиться успеха в среде cartpole, и хотел использовать его в качестве отправной точки для игрового бота для некоторых игр Atari.Однако, если я просто изменю среду, скажем, на Frostbite-v0, я получу эту ошибку при запуске рабочих потоков:

Exception in thread Thread-4:
Traceback (most recent call last):
  File "threading.py", line 917, in _bootstrap_inner
    self.run()
  File "a3c.py", line 286, in run
    action = np.random.choice(self.action_size, p=probs.numpy()[0])
  File "mtrand.pyx", line 1135, in mtrand.RandomState.choice
ValueError: object too deep for desired array

Я полный нуб в Deep Learning, но я думаю, проблемаэто то, как сеть просто имеет Dense слоев, принимающих входные данные, которые в этом случае, принимая this в качестве эталона, имеют среду с другой формой, то есть не Box(4,), как в примере с cartpole, ноBox(210, 160, 3).

Как мне изменить пример, чтобы он правильно работал с таким наблюдением?Нужно ли добавлять / изменять слои?И вообще, чтобы он работал правильно для среды Frostbite-v0?

Редактировать: Еще одна вещь, которая меня беспокоит, это то, что параметр state_size в ActorCriticModel установлен, но никогда не используется, по крайней мере, извнешняя перспектива.Использует ли модель его каким-либо образом или он просто находится в качестве неиспользуемого параметра?

1 Ответ

0 голосов

Боюсь, вам нужно будет многое изменить: во-первых, для работы с входными данными, изображениями, вам необходимо добавить сверточные слои.Во-вторых, традиционно изображения игр atari уменьшаются с 210x160x3 до 64x64 (крошечные изображения в оттенках серого) или что-то в этом роде.Так что если вы новичок, я думаю, что было бы лучше проверить некоторые другие учебники.Например известный пост в блоге от известного парня Карпати

...