pytorch 中pkl和pth的区别?

torch.save()实现对网络结构和模型参数的保存。有两种保存方式:一是保存整个神经网络的的结构信息和模型参数信息,save的对象是网络模型;二是只保存神经网络的训练模型参数,save的对象是net.state_dict()。

假设我有一个训练好的模型名叫net1,则

torch.save(net1, ‘7-net.pth’) # 保存整个神经网络的结构和模型参数

torch.save(net1, ‘7-net.pkl’) # 同上

torch.save(net1.state_dict(), ‘7-net_params.pth’) # 只保存神经网络的模型参数

torch.save(net1.state_dict(), ‘7-net_params.pkl’) # 同上

如果你是使用torch.save方法来进行模型参数的保存,那保存文件的后缀其实没有任何影响,结果都是一样的,很多.pkl的文件也是用torch.save保存下来的,和.pth文件一模一样的。。。

------------------------------------------------------------

不过,如果应用场景不是在这里,这两种格式的文件还是有区别的,.pkl文件是python里面保存文件的一种格式,如果直接打开会显示一堆序列化的东西,其实就是以二进制形式存储的,如果去read这些文件,则需要用'rb'而不是'r'模式。

而.pth文件则有不同的应用,Python在遍历已知的库文件目录过程中,如果见到一个.pth 文件,就会将文件中所记录的路径加入到 sys.path 设置中,于是 .pth 文件指明的库也就可以被 Python 运行环境找到了。

但其实不管pkl文件还是pth文件,都是以二进制形式存储的,没有本质上的区别,你用pickle这个库去加载pkl文件或pth文件,效果都是一样的。

你可能感兴趣的:(pytorch 中pkl和pth的区别?)