Tensorflow中动态改变观测阵列长度



我尝试在Tensorflow中使用tf_agents创建一个强化学习环境。是否可以动态改变观测阵列的大小?

例如,我想让代理学习在加权图中找到最小路径,所以每一集我都会创建一个随机图。代理在顶点上的每一步,观察数组都包含传出边权重。有时有1,但有时更多,所以大小不是恒定的。我在环境的init函数中定义了这样的观察结果,其中n是从起始顶点传出的边数:

self._observation_spec = array_spec.BoundedArraySpec(shape=(1,n), dtype=np.int32, minimum=0, name='observation')

如果以后我想更改数组的大小,它会引发一个错误(给定time_spec的ValueError与预期的不匹配…(。

有可能绕过这个错误吗?或者我需要改变这个例子中的环境结构吗?

显然不可能更改观察的大小(即使您可以通过此ArraySpec检查,您的代理也无法管理不同大小的输入(。我建议重新格式化您的环境,使其支持每个节点最多有x个邻居的图,并且您只输出大小为x的多热点编码向量。

最新更新