Как расширить класс агента в ChainerRL в Python

#python #reinforcement-learning #chainer

#python #обучение с подкреплением #цепочка

Вопрос:

Я хочу расширить класс агента PPO в ChainerRL. Я сделал следующее:

 class exPPO(chainerrl.agents.PPO):
    
    def act_and_train(self, obs, reward):
        action = chainerrl.agents.PPO(self, obs, reward)
        print("this is my exPPO act and train")
        return action
 

Я пытался с помощью cartpole env из gym, но при выполнении

 obs, reward = env.step(action)
 

он просто вылетает со следующим выводом

 this is my exPPO act and train
Traceback (most recent call last):
  File "C:personal_ifextendPPO.py", line 184, in <module>
    obs, reward, done, _ = env.step(action)
  File "C:UsersPareekHiAppDataLocalProgramsPythonPython37libsite-packagesgymwrapperstime_limit.py", line 16, in step
    observation, reward, done, info = self.env.step(action)
  File "C:UsersPareekHiAppDataLocalProgramsPythonPython37libsite-packagesgymenvsclassic_controlcartpole.py", line 104, in step
    assert self.action_space.contains(action), err_msg
AssertionError: <chainerrl.agents.ppo.PPO object at 0x000002A986D2F508> (<class 'chainerrl.agents.ppo.PPO'>) invalid
 

Пожалуйста, помогите, как я могу расширить класс PPO здесь.

Ответ №1:

 action = super().act_and_train(obs, reward)
 

https://docs.python.org/3/library/functions.html#super