【Libtorch部署】pkl 转 pt

在C++部署Libtorch的时候,需要调用 pt 格式的模型,因此需要提前将 pkl 格式的模型转成 pt 格式。

  • CPU 版本
import torch
from myModels.UNet import UNet as unet

# Download and load the pre-trained model
# 模型加载方式1
# model = torch.load("checkpoints/model_50.pkl",map_location='cpu')

# 模型加载方式2,需要提前加载模型框架(断点)
num_channels = 3
num_classes = 1
model = unet(n_classes=num_classes,n_channels=num_channels).to(device='cpu')

checkpoint = torch.load('./checkpoints(Unet)/model.pkl')            # 加载断点
model.load_state_dict(checkpoint['net'])            # 加载模型可学习参数

# 模型加载方式3,需要提前加载模型框架(非断点)
# model.load_state_dict(torch.load('checkpoints/model_50.pkl'))

model.eval()

example_input = torch.rand(1, 3, 256, 256)
script_module = torch.jit.trace(model, example_input)
script_module.save('./checkpoints(Unet)/model_cpu.pt')
- GPU 版本(看看就好,其实用不着)
import torch
from myModels.UNet import UNet as unet
# 模型加载
num_channels = 3
num_classes = 1
model = unet(n_classes=num_classes,n_channels=num_channels).to(device='cuda')

checkpoint = torch.load('./checkpoints(Unet)/model.pkl')            # 加载断点
model.load_state_dict(checkpoint['net'])            # 加载模型可学习参数

model.cuda()
model.eval()

example_input = torch.rand(1, 3, 256, 256).cuda()  # 生成测试sample
script_module = torch.jit.trace(model, example_input)
script_module.save('./checkpoints(Unet)/model_gpu.pt')

【P.S.】

  Python中无需将模型转成GPU版本的 pt,因为CPU版本的 pt 在C++中Release模型下也可以调用CUDA,相反GPU版本的 pt 在C++中Debug模型还会报错。
  在Libtorch中:Debug 模型下,默认设备使用的是 CPU; Releas 模型下,根据用户设置使用 GPU / CPU。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值