libtorch下载地址:[LibTorch & Linux] 各版本 LibTorch 下载
(注意:libtorch版本和pytorch版本最好对应。最不济也要保证pytorch是高版本,libtorch低版本。
我这里torch1.12.1
>>>> libtorch1.10.0
)
本文主要参考了这篇文章:Ubuntu 20.04下c++ libtorch gpu配置与运行
第一步:训练pytorch模型,
在python上训练并保存pytorch模型
torch.save(model, 'saved_model.pth')
第二步:下载安装libtorch
在ubuntu上配置libtorch环境。
-
如果是安装GPU版本的libtorch,在此之前还要配置cuda和cudnn环境,本文只是CPU,所以不考虑此步。
-
此外参考了文章: 在ubuntu下将Pytorch模型部署到c++(一)(环境搭建),安装了
llvm
和clang
。 -
Anaconda创建了新的虚拟环境pytorch1_12,这一步应该不是必须的,但为了方便管理,还是创建了一个虚拟环境。
-
libtorch可以离线下载,然后解压。在
~/
目录下创建文件夹libtorch,解压进去。
mkdir -p ~/libtorch
将文件夹解压到这里
unzip libtorch-cxx11-abi-shared-with-deps-1.10.0+cpu.zip -d ~/libtorch
解压完成之后会有这些文件:
到这里,libtorch
就配置好了。
第三步:编写C++测试代码并编译
3.1 将.pth
模型转化为.pt
模型,这一步是为了将pytorch模型转化为c++可调用的模型。
- 运行python代码:
import torch
import datetime
import matplotlib.pyplot as plt
import torch.nn as nn
import numpy as np
device = torch.device('cpu') #默认即在cpu上
# 定义网络结构
class Net(torch.nn.Module): # 继承 torch 的 Module
def __init__(self, n_features):
super(Net, self).__init__() # 继承 __init__ 功能
self.l1 = nn.Linear(n_features,32) # 特征输入
self.l2 = nn.ReLU() # 激活函数
self.l3 = nn.BatchNorm1d(32) # 批标准化
self.l4 = nn.Linear(32,64)
self.l5 = nn.ReLU()
self.l6 = nn.BatchNorm1d(64)
self.l7 = nn.Linear(64, 128)
self.l8 = nn.