解决模型加载的路径问题“No such file or directory”

问题描述

—— 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)加载模型即可。

你可能感兴趣的:(快乐ML/DL,python,pytorch)