关于绝对路径和相对路径的编程

问题描述


—— model
    model.py
    —— checkpoints
        Epoch99.pth
test.py

mode.py文件中利用torch.load(checkpoints/Epoch99.pth)调用模型

在test.py中加载模型出错,明明位置上存在该文件,但是一直提示“No such file or directory: ‘checkpoints/Epoch99.pth’”。

原因分析


这主要是因为运行的主程序test.py与模型加载所在文件model.py的相对路径以及发生改变,无法找到checkpoints/Epoch99.pth路径。

解决方法


① 将模型加载路径改为主程序的相对位置,./model/checkpoints/Epoch99.pth;

② ①方法虽然能解决问题,但仍然可能在多个不同位置上加载模型文件,不可能每次都手动更改。因此,我们就不要再采用相对路径加载模型了,而是在model.py中用绝对路径加载模型

abs_file = os.path.abspath(__file__)    # 获取model.py文件的绝对路径
# 找到绝对路径的同级目录
abs_dir = abs_file[:abs_file.rfind('\\')] if os.name == 'nt' else abs_file[:abs_file.rfind(r'/')]    
# 构造模型文件的绝对路径
model_dir = os.path.join(abs_dir, 'checkpoints/Epoch99.pth')
abs_dir = abs_file[:abs_file.rfind('\\')] if os.name == 'nt' else abs_file[:abs_file.rfind(r'/')]

这段代码用于判断在windows环境下还是其他环境,如果为windows环境路径以\分割,其他为/

然后使用torch.load(model_dir)加载模型即可。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值