C++ litorch 加载python训练的模型

本文介绍了如何在C++中加载用Python PyTorch训练的深度学习模型。首先,训练得到.pth模型,然后使用torch.jit.trace转换为.pt文件。在C++中,确保使用与Python相同版本的libtorch,并正确配置litorch。通过非指针方式加载模型,并保持输入格式一致。提供了Python和C++项目的GitHub链接。
摘要由CSDN通过智能技术生成

深度学习模型一般都是用python(基于pytorch)进行训练的,下面就说一下如何用C++加载python训练的模型。

       首先在python训练完模型后,得到.pth的训练模型。然后在生成C++所需的.pt文件时,调用torch.jit.trace()函数时,给模型提供一个正常的输入(需要与模型正常的输入格式相同),在本文中输入的是一张图片, 如下:

img = cv2.imread("test.jpg")                                       #读入图像
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
inputs = img
inference(img, show_result=True, target_shape=(360, 360))          #模型测试函数

      由于模型中对输入的图片进行了处理,所以在生成.pt文件时,也应该对图片进行处理:

inputs_resized = cv2.resize(inputs, (360, 360))
inputs_np = inputs_resized / 255.0  # 归一化到0~1
inputs_exp = np.expand_dims(inputs_np, axis=0)

inputs_transposed = inputs_exp.transpose((0, 3, 1, 2))

根据自己代码中怎么处理自行修改(话说一千个读者就有一千个哈姆雷特,自己对号修改就行了)。

修改完后,开始进行生成.pt操作,调用torch.jit.trace()函数。

traced_script_module = torch.jit.trace(model, torch.tensor(inputs_transposed).float())

model时自己声明的网络模型,torch.tensor(inputs_transposed).float()时模型的输入(与测试时的输入格式相同)

可以看看调用上边生成模型后,是否有输出(注意:如果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT远征军

谢谢各位鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值