如何将.pth.tar格式模型文件转换为同目录下的.pt格式文件?
.pth.tar 格式文件转 .pt 操作方法
.pth.tar是PyTorch生态非常常见的checkpoint存储后缀,和常规.pt/.pth文件的序列化逻辑完全兼容,不需要第三方转换工具,直接用PyTorch内置接口读取重存就能完成转换。
准备工作
- 本地已经安装可用的PyTorch,大版本和你下载权重对应的PyTorch版本匹配即可,不需要完全一致
- 如果加载特定模型(比如你用的mlnf行人重识别模型)时报类不存在的错误,提前把对应模型代码的路径加入Python搜索路径就行,不需要修改权重本身
转换脚本
把下面脚本里的input_file变量替换成你本地.pth.tar文件的绝对路径,直接运行即可。转换后的.pt文件会自动保存在原文件所在目录,文件名和原文件保持一致,仅替换后缀为.pt:
import os import torch # 替换为你的.pth.tar文件实际路径 input_file = "/your/local/path/to/mlnf_model.pth.tar" # 加载权重,默认映射到CPU,不占用GPU显存 # 高版本PyTorch如果报weights_only相关报错,给torch.load加参数 weights_only=False 即可 checkpoint = torch.load(input_file, map_location="cpu") # 生成输出文件路径 save_dir = os.path.dirname(input_file) save_name = os.path.basename(input_file).replace(".pth.tar", ".pt") output_path = os.path.join(save_dir, save_name) # 保存为.pt格式 torch.save(checkpoint, output_path) print(f"转换完成,文件已保存到:{output_path}")
异常处理
- 如果torch.load加载时提示文件格式无效:说明该文件是标准tar压缩包,先手动用tar命令解压,取出解压后得到的.pth文件,再用上面的脚本读取保存为.pt即可
- 如果只需要推理用的模型权重,不需要保存训练附带的优化器状态、迭代轮次、日志等冗余内容,可以在加载后单独提取权重字典存储,减小输出文件体积,替换保存部分的代码即可:
# 提取纯模型权重 weight_dict = checkpoint["state_dict"] if "state_dict" in checkpoint else checkpoint torch.save(weight_dict, output_path)
- 你提到的mlnf系列权重没有做特殊加密或者格式定制,按上述方法转换得到的.pt文件可以直接被PyTorch正常加载调用,不需要找官方发布的专属.pt版本。
内容的提问来源于stack exchange,提问作者jack gell
相关产品推荐
相关产品推荐

