qq_52797084 2023-08-04 19:17 采纳率: 30.8%
浏览 4

importerror怎么解决(语言-python)

以下代码遇到这个问题:ImportError: cannot import name 'minor' from 'os' (A:\python\lib\os.py)应该怎么解决呢

import argparse

import os

import torch
import numpy as np
from dueling_dqn.simple_agent import dqn_agent
from dueling_dqn import utils
from simulator import Simulator
from allocate import get_allocate_matrix


def target_policy(state):
    prob = np.ones(5)/100
    # stay, down, left, right, up
    if state[0] < 0:
        prob[2] += 5*abs(state[0])
    elif state[0] > 0:
        prob[3] += 5*abs(state[0])
    if state[1] > 0:
        prob[1] += 5*abs(state[1])
    elif state[1] < 0:
        prob[4] += 5*abs(state[1])
    if state[0] == 0 and state[1] == 0:
        if sum(state[2:]) == 0:
            prob = np.zeros(5)
        prob[0] += 1
    if state[2] == 1:
        prob[2] = 0
    if state[3] == 1:
        prob[3] = 0
    if state[4] == 1:
        prob[4] = 0
    if state[5] == 1:
        prob[1] = 0
    prob = prob/sum(prob)
    action = np.random.choice(range(5), p = prob)
    return action

def main():
    parser = argparse.ArgumentParser()
    # env name
    parser.add_argument("--env_name", default="MAPF", type=str)
    # use cuda
    parser.add_argument("--cuda", default=True, type=bool)
    # load model to continue
    parser.add_argument("--load_model", default=True, type=bool)
    # save dir
    parser.add_argument("--save_dir", default='./models', type=str)
    args = parser.parse_args()

    env = Simulator((601,601,3),1)
    robots, targets = env.information()
    pairs = get_allocate_matrix(robots, targets)
    env.update_pairs(pairs)
    model = dqn_agent(env, args)
    if args.load_model:
        model_path = os.path.join(args.save_dir, args.env_name)
        model.load_dict(model_path+"/model3.538501262664795.pt")
    obs = env.reset(True)
    obs = [obs[0]]
    done = False
    while not done:
        with torch.no_grad():
            obs_tensor = model._get_tensors(obs)
            action_value = model.net(obs_tensor)
        action = utils.select_action(action_value, 0.1)
        if type(action) == np.int64 or type(action) == int:
            action = [action]
        reward, obs_, done, _ = env.step_test(action, True, "single_DQN_test.gif")
        obs = [obs_[0]]
        done = np.array(done).any()

def main2():
    parser = argparse.ArgumentParser()
    # env name
    parser.add_argument("--env_name", default="MAPF", type=str)
    # use cuda
    parser.add_argument("--cuda", default=True, type=bool)
    # load model to continue
    parser.add_argument("--load_model", default=True, type=bool)
    # save dir
    parser.add_argument("--save_dir", default='./models', type=str)
    args = parser.parse_args()

    robot_num = 2
    env = Simulator((601,601,3),robot_num)
    
    model = dqn_agent(env, args)
    if args.load_model:
        model_path = os.path.join(args.save_dir, args.env_name)
        model.load_dict(model_path+"/model3.538501262664795.pt")
    obs = env.reset(True)
    robots, targets = env.information()
    pairs = get_allocate_matrix(robots, targets)
    env.update_pairs(pairs)
    env_2 = Simulator((601,601,3), robot_num, [robots.copy(), targets.copy()],'final')
    done = False
    while not done:
        action = np.zeros(robot_num)
        for i in range(robot_num):
            action_temp = np.zeros(robot_num)
            robot_action = target_policy(obs[i])
            action_temp[i] = robot_action
            reward, obs_, done, _ = env_2.step_test(action_temp, True)
            obs = obs_
            action[i] = robot_action
        reward, obs_, done, _ = env.step_test(action, True, "Multi_DQN_test.gif")
        obs = obs_
        done = np.array(done).all()

if __name__ =="__main__":
    main2()

  • 写回答

2条回答 默认 最新

  • 雪碧有白泡泡 全栈领域优质创作者 2023-08-04 19:26
    关注

    ImportError: cannot import name 'minor' from 'os' (A:\python\lib\os.py) 错误提示表明在导入minor函数时出现了问题。

    minor函数不是标准的os模块中的函数,这可能是因为命名冲突或者使用了错误的包。为了解决这个问题,您可以尝试以下方法:

    1. 检查是否存在命名冲突:确保您没有在自己的代码中命名一个名为minor的函数,以免与标准库的os模块冲突。

    2. 检查是否存在其他包或模块导入错误:可能某个导入语句中错误地导入了os模块而非期望的包。请检查代码中所有导入语句,并确保导入正确的包。

    3. 检查Python环境和依赖项:确认您的Python环境和相关依赖项正确安装和配置。可以尝试重新安装Python并更新依赖项,确保环境正确。

    评论

报告相同问题?

问题事件

  • 创建了问题 8月4日

悬赏问题

  • ¥60 求直线方程 使平面上n个点在直线同侧并且距离总和最小
  • ¥50 java算法,给定试题的难度数量(简单,普通,困难),和试题类型数量(单选,多选,判断),以及题库中各种类型的题有多少道,求能否随机抽题。
  • ¥50 rk3588板端推理
  • ¥250 opencv怎么去掉 数字0中间的斜杠。
  • ¥15 这种情况的伯德图和奈奎斯特曲线怎么分析?
  • ¥250 paddleocr带斜线的0很容易识别成9
  • ¥15 电子档案元素采集(tiff及PDF扫描图片)
  • ¥15 flink-sql-connector-rabbitmq使用
  • ¥15 zynq7015,PCIE读写延时偏大
  • ¥15 使用spss做psm(倾向性评分匹配)遇到问题