安装libtoch记录,深度学习部署,Clion使用
前言
开门见山,本次的主题是如何使用Clion和Cmake导入Libtorch库,以此来进行Pytorch模型在C++上的部署,有利于嵌入式深度学习开发,在游戏,硬件上可以使用Libtorch库去运行深度学习模型。
一、环境介绍
- Windows10系统
- libtorch的CPU版本
- Clion软件
- Microsoft Visual Studio 2022 Community
二、前期准备工作
1.结果展示
CLion随便安装,我是用了专业版的
首先声明安装好后是什么样子的
代码如下:
#include <iostream>
#include <torch/torch.h>
using namespace std;
int main(){
cout << "Hello World!" << endl;
at::Tensor x = at::rand({1, 2, 3, 4, 5});
print(x);
return 0;
}
输出为
Hello World!
0.0098 0.4784
[ CPUFloatType{1,2} ]
进程已结束,退出代码为 0
2.下载 Visual Studio 2022
先下载 Visual Studio Installer
安装好后
里面的东西可以随便选,小孩才做选择,大人全都要
搞嵌入式的自己去这
其实上面这些都不重要
选这几个就行
上面的这些操作只是为了在clion上有这个东西
3.下载libtorch
首先呢,我python方面的pytorch已经装好了,而且是GPU版的,但是考虑到GPU的libtorch可能会很复杂,这次安装的是CPU版的libtorch,先看自己的NVIDIA版本,CMD起手会把。
查看自个NVIDIA版本的命令
nvidia-smi
然后呢,我觉得12.6应该也能装12.4的,直接去pytorch官网选windows版的。
md官网有点慢,构思
然后解压到随便一个地方
这两玩意加环境变量里,我反正加了,起没起作用我也不知道,反正md第二天这玩意就能用,估计要重启一次电脑。
环境变量设置
4.写CMakeLists.txt
首先是新建一个项目
然后CLion去设置一下工具链,之前给看到过
然后就是CMakeLists.txt,里面就一个文件路径要改和项目名称要改的吧
cmake_minimum_required(VERSION 3.29)
project(Study)
# 设置 C++ 标准
set(CMAKE_CXX_STANDARD 17)
# 设置 libtorch 路径
set(CMAKE_PREFIX_PATH E:/ProgramData/Clion_library/libtorch)
find_package(Torch REQUIRED)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${TORCH_CXX_FLAGS}")
message("c${CMAKE_CXX_FLAGS}")
message("t${TORCH_CXX_FLAGS}")
# 创建可执行文件
add_executable(${PROJECT_NAME} main.cpp
math_Prime.cpp
math_Prime.h
)
# 链接 libtorch 库
target_link_libraries(${PROJECT_NAME} "${TORCH_LIBRARIES}")
message("tl${TORCH_LIBRARIES}")
# 设置 libtorch 头文件路径
target_include_directories(Study PRIVATE ${TORCH_INCLUDE_DIRS})
message("TI${TORCH_INCLUDE_DIRS}")
## 设置 C++ 标准
set_property(TARGET Study PROPERTY CXX_STANDARD 17)
然后就是CMake一下
导入这些包,之前我不能用的,重启之后的第二天,密码的竟然能用了,构思
#include <torch/torch.h>
#include <iostream>
int main() {
torch::Tensor tensor = torch::rand({2, 3});
std::cout << tensor << std::endl;
}
结果
0.3318 0.0611 0.9970
0.5363 0.8822 0.1034
[ CPUFloatType{2,3} ]
总结
重启能密码的解决99%的问题,其中1%靠努力和天赋,也就是说,你会重启已经超过大多数的人了,其他都是因为开发这些程序的人不够努力导致的,还要自己去导入,累都累死了,都怪他们。