PyTorch 中的 .pt、.pth 和 .pwf 扩展名有什么区别?

What is the difference between .pt, .pth and .pwf extentions in PyTorch?

我在一些代码示例中看到,人们使用 .pwf 作为模型文件保存格式。但在 PyTorch 文档中,建议使用 .pt 和 .pth。我使用 .pwf 并且在小型 1->16->16 卷积网络上工作得很好。

我的问题是这些格式之间有什么区别?为什么 PyTorch 文档中甚至不推荐 .pwf 扩展名,为什么人们仍然使用它?

文件扩展名不会更改已保存文件中的任何内容。推荐的扩展名只是为了让大家认出它其实是从pytorch中保存下来的模型而已。然而pytorch其实使用了python内置的pickle模块(https://docs.python.org/2/library/pickle.html)

只是为了扩展 answer, it is advised to use .pt extension because .pth is used by Python itself for site-packages and module path pointing (see this answer 以获取更多信息和适当的 Python 文档)。

列出的扩展之间没有区别:.pt.pth.pwf。可以使用他想要的任何扩展名。因此,如果您使用 torch.save() 来保存模型,那么它默认使用 python pickle (pickle_module=pickle) 来保存对象和一些元数据。因此,您可以自由选择所需的扩展名,只要它不会与任何其他标准化扩展名发生冲突。

话虽如此,却是not recommended to use .pth extension when checkpointing models because it collides with Python path (.pth) configuration files。因此,我自己使用 .pth.tar.pt 但不使用 .pth 或任何其他扩展名。


PyTorch 中检查点模型的标准方法尚未最终确定。在撰写本文时,这是一个未解决的问题:Recommend a different file extension for models (.PTH is a special extension for Python) - issues/14864

suggested by @soumith 使用:

  • .pt 用于 pickle 格式的检查点模型
  • .ptc 用于在 pytorch 中编译的检查点模型(用于 JIT)