我正在尝试使用TensorFlow在自定义环境中实现DQN。
我已经完成了环境类的实现,并将其集成为DQN环境的一部分。
但是,我遇到了一个错误,
收到批量和未批量张量的混合,或者张量与规格不兼容。 num_outer_dims:1。 看到tensor_shapes: TimeStep(step_type = TensorShape([1]),reward = TensorShape([1]),discount = TensorShape([1]),观察= TensorShape([1,1,6]))
和spec_shapes: TimeStep(step_type = TensorShape([]),reward = TensorShape([]),discount = TensorShape([]),观察= TensorShape([6]))
我在Tensorflow问题中发现了相同的错误,但我找不到确切的解决方案。
在我定义的环境类中,我将操作规范和观察规范指定为
self._action_spec = array_spec.BoundedArraySpec(
shape=(), dtype=np.int32, minimum=0, maximum=nq, name='action')
self._observation_spec = array_spec.BoundedArraySpec(
shape=(nq,), dtype=np.int32, minimum=0, maximum=1, name='observation')
其中 nq 是一个整数值。我不知道为什么TensorShapes看起来像那样。
谢谢。
答案 0 :(得分:0)
我遇到了同样的错误。我不知道到底是什么解决了这个问题,但是笔记本(ipynb)就是一个问题–您必须等待一段时间才能计算各章,并可能在一段时间后再次单击,或者尝试在没有笔记本的py文件中尝试代码。 我更改的另一件事是在Gym-env中从空间定义观察空间,离散为space.Box,例如:
self.observation_space = spaces.Box(low=0, high=2000, shape=(20, 20), dtype=np.int32)