TensorFlow“接收到批量和未批量的张量的混合,或者张量与规范不兼容”

时间:2020-10-12 02:22:06

标签: python tensorflow

我正在尝试使用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看起来像那样。

谢谢。

1 个答案:

答案 0 :(得分:0)

我遇到了同样的错误。我不知道到底是什么解决了这个问题,但是笔记本(ipynb)就是一个问题–您必须等待一段时间才能计算各章,并可能在一段时间后再次单击,或者尝试在没有笔记本的py文件中尝试代码。 我更改的另一件事是在Gym-env中从空间定义观察空间,离散为space.Box,例如:

self.observation_space = spaces.Box(low=0, high=2000, shape=(20, 20), dtype=np.int32)