【问题标题】:Dynamically change observation array length in Tensorflow?在Tensorflow中动态改变观察数组长度?
【发布时间】:2021-02-19 07:49:51
【问题描述】:

我尝试在 Tensorflow 中使用 tf_agents 进行强化学习环境。 是否可以动态改变观察数组的大小?

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

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

如果稍后我想更改数组的大小,则会引发错误(ValueError given time_spec 与预期不匹配...)。

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

【问题讨论】:

    标签: python tensorflow reinforcement-learning agent


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2016-08-30
      • 2018-08-24
      • 2021-07-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多