'mujoco._structs.MjData'对象没有属性'solver_iter'

问题描述 投票:0回答:1

我正在遵循 Jonny Codes 的本教程,并完全按照所示方式复制它:https://www.youtube.com/watch?v=OqvXHi_QtT0

我的代码是:

import gymnasium as gym
from stable_baselines3 import SAC, TD3, A2C
import os
import argparse

# Create directories to hold models and logs
model_dir = "models"
log_dir = "logs"
os.makedirs(model_dir, exist_ok=True)
os.makedirs(log_dir, exist_ok=True)

def train(env, sb3_algo):
    model = SAC('MlpPolicy', env, verbose=1, device='cpu', buffer_size=100000, tensorboard_log=log_dir)

    TIMESTEPS = 10000
    iters = 0
    while True:
        iters += 1

        model.learn(total_timesteps=TIMESTEPS, reset_num_timesteps=False)
        model.save(f"{model_dir}/{sb3_algo}_{TIMESTEPS*iters}")

def test(env, sb3_algo, path_to_model):
    model = SAC.load(path_to_model, env=env)

    obs = env.reset()[0]
    done = False
    extra_steps = 500
    while True:
        action, _ = model.predict(obs)
        obs, _, done, _, _ = env.step(action)

        if done:
            extra_steps -= 1

            if extra_steps < 0:
                break


if __name__ == '__main__':

    # Parse command line inputs
    parser = argparse.ArgumentParser(description='Train or test model.')
    parser.add_argument('gymenv', help='Gymnasium environment i.e. Humanoid-v4')
    parser.add_argument('sb3_algo', help='StableBaseline3 RL algorithm i.e. SAC, TD3')
    parser.add_argument('-t', '--train', action='store_true')
    parser.add_argument('-s', '--test', metavar='path_to_model')
    args = parser.parse_args()


    if args.train:
        gymenv = gym.make(args.gymenv, render_mode=None)
        train(gymenv, args.sb3_algo)

    if(args.test):
        if os.path.isfile(args.test):
            gymenv = gym.make(args.gymenv, render_mode='human')
            test(gymenv, args.sb3_algo, path_to_model=args.test)
        else:
            print(f'{args.test} not found.')


但是,我收到错误:

    test(gymenv, args.sb3_algo, path_to_model=args.test)
...
...
    bottomleft, "Solver iterations", str(self.data.solver_iter + 1)
AttributeError: 'mujoco._structs.MjData' object has no attribute 'solver_iter'

我忽略了错误的中间部分,因为我认为这不重要,但我做错了什么?

我尝试将其放入 venv 并使用 python 与 python3,但没有任何效果

reinforcement-learning openai-gym stable-baselines mujoco
1个回答
0
投票

这是https://github.com/Farama-Foundation/Gymnasium/issues/749

将 MuJoCo 版本修复为

mujoco==2.3.0
或应用 Gymnasium 存储库中提到的修复。

© www.soinside.com 2019 - 2024. All rights reserved.