碎片篇——Pytorch模型 .pt, .pth, .pkl的区别及模型不同保存加载方式的区别

1. Pytorch模型 .pt, .pth, .pkl的区别

后缀名为.pt, .pth, .pkl的pytorch模型文件,在格式上其实没有区别,只是后缀不同而已(仅此而已)!
在用torch.save()函数保存模型文件时,各人有不同的喜好,有些人喜欢用.pt后缀,有些人喜欢用.pth或.pkl.用相同的torch.save()语句保存出来的模型文件没有什么不同。

2. 模型不同保存加载方式的区别

模型的保存和加载有两种方式:

(1) 仅仅保存和加载模型参数
# 保存
torch.save(the_model.state_dict(), PATH='mymodel.pth')		#只保存模型权重参数,不保存模型结构

# 调用
the_model = TheModelClass(*args, **kwargs)					#这里需要重新模型结构,TheModelClass
the_model.load_state_dict(torch.load('mymodel.pth'))		#这里根据模型结构,调用存储的模型参数
(2) 保存和加载整个模型
# 保存
torch.save(the_model, PATH)									#保存整个model的状态

# 调用
the_model = torch.load(PATH)								#这里已经不需要重构模型结构了,直接load就可以

第一种方式需要自己定义网络,并且其中的参数名称与结构要与保存的模型中的一致(可以是部分网络,比如只使用VGG的前几层),相对灵活,便于对网络进行修改。第二种方式则无需自定义网络,保存时已把网络结构保存,比较死板,不能调整网络结构。

你可能感兴趣的:(碎片,python,PyTorch入门)