玩这个。我可以成功训练 1 个大脑,但是当我想训练 2 个大脑时出现以下错误
---------------------------------------------------------------------------
UnityActionException Traceback (most recent call last)
<ipython-input-4-520c26ebec47> in <module>()
48
49
---> 50 new_info = trainer.take_action(info, env, brain_name)
51
52
C:\UNITY\ml-agents-master\python\ppo\trainer.py in take_action(self, info, env, brain_name)
51 self.stats['value_estimate'].append(value)
52 self.stats['entropy'].append(ent)
---> 53 new_info = env.step(actions, value={brain_name: value})[brain_name]
54 self.add_experiences(info, new_info, epsi, actions, a_dist, value)
55 return new_info
C:\UNITY\ml-agents-master\python\unityagents\environment.py in step(self, action, memory, value)
288 raise UnityActionException(
289 "You have {0} brains, you need to feed a dictionary of brain names a keys, "
--> 290 "and actions as values".format(self._num_brains))
291 else:
292 action = {self._brain_names[0]: action}
UnityActionException: You have 2 brains, you need to feed a dictionary of brain names a keys, and actions as values
在这里我找到了这部分,与我的问题有关:
步骤:env.step(动作,内存=无,值=无)
使用操作向环境发送步进信号。请注意,如果环境中有多个大脑,则必须提供从大脑名称到动作的字典。
如果每个大脑有多个代理,动作可以是一维数组或二维数组。
memory 是一个可选输入,可用于发送每个代理的浮点列表,以便在下一步检索。
value 是一个可选输入,用于在 AgentMonitor.cs 组件附加到代理时为每个代理发送一个要显示的浮点数。返回将大脑名称映射到 BrainInfo 对象的字典。
但我不确定如何解释它。有人可以建议我应该如何构建它,以便我可以在我的环境中使用 2 个大脑吗?
谢谢!