Я следовал учебному пособию 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
установлен, но никогда не используется, по крайней мере, извнешняя перспектива.Использует ли модель его каким-либо образом или он просто находится в качестве неиспользуемого параметра?