Ошибка: `обратные вызовы` должны быть вызываемым методом, который возвращает подкласс DefaultCallbacks, полученный ‹class 'ray.rllib.agents.callbacks.DefaultCallbacks'›

когда я запускаю некоторые коды (DDPG - Градиент глубокой детерминированной политики), возникает эта ошибка: ValueError: callbacks должен быть вызываемым методом, который возвращает подкласс DefaultCallbacks, получил ‹class 'ray.rllib.agents.callbacks.DefaultCallbacks'›

мой код здесь:

import json

def load_policy():
    log_dir = "/root/ray_results/DDPG_SimpleSupplyChain_2020-07-15_02-37-48j2fjk67_" # this path needs to be set manually
    checkpoint_id = "200"
    with open(f"{log_dir}/params.json", "r") as read_file:
        config = json.load(read_file)
    trainer = ddpg.DDPGTrainer(config=config, env=SimpleSupplyChain)
    trainer.restore(f"{log_dir}/checkpoint_{checkpoint_id}/checkpoint-{checkpoint_id}")
    return trainer.get_policy()

policy = load_policy()

log_dir — расположение параметров обученного DDPG.

Я хочу использовать обученные параметры, поэтому используйте код config = json.load(read_file).

затем, когда я делаю DDPGTrainer, использую этот конфиг, но возникают некоторые ошибки.

введите здесь описание изображения

Как я могу решить эту ошибку?


person Peter Kim    schedule 15.07.2020    source источник


Ответы (1)


Я подозреваю, что ваш params.json имеет строковое представление класса обратных вызовов. config dict должен содержать реальный объект Python для обратного вызова, а не строковое представление. Вы можете попробовать загрузить обработанную версию конфигурации, как в rollout.py в кодовой базе RLlib, а не загружать ее представление JSON.

person Andrew Rosenfeld    schedule 03.08.2020