При использовании TF tf_agents.metrics.tf_metrics.ChosenActionHistogram с драйвером TF Dynami c step и моей собственной средой я обнаружил следующую ошибку:
ValueError: Shapes must be equal rank, but are 1 and 0 for '{{node ResourceScatterUpdate}} = ResourceScatterUpdate[Tindices=DT_INT32, dtype=DT_INT32](ResourceScatterUpdate/resource, FloorMod, value)' with input shapes: [], [], [1]
Я прикрепленных наблюдателей к драйверу шага, например:
self.average_episode_length_metric = tf_metrics.AverageEpisodeLengthMetric()
self.average_return_metric = tf_metrics.AverageReturnMetric()
self.selected_action_histogram_metric = tf_metrics.ChosenActionHistogram()
self.observers = [self.average_episode_length_metric,
self.average_return_metric,
self.selected_action_histogram_metric
]
self.eval_step_driver = dynamic_step_driver.DynamicStepDriver(
self.eval_env,
self.agent.policy,
num_steps=self.num_eval_steps,
observers=self.observers
)
, а затем запустите драйвер шага следующим образом:
self.eval_step_driver.run()
Еще немного трассировки ошибки выглядит как следует:
File "./bot/DQN.py", line 109, in record_policy_metrics
self.eval_step_driver.run()
tf_agents-0.4.0-py3.8.egg/tf_agents/metrics/tf_metrics.py:50 extend *
self.add(v)
Я понимаю предпосылку проблемы, что тензорные формы не совпадают, но я не могу понять, почему это может происходить. Удаление ChosenActionHistorgram из наблюдателей устраняет ошибку, и другие показатели работают правильно. Что здесь может происходить? Могут ли тензоры траекторий иметь какое-то значение?