Libtorch的介绍与使用方法

2023-11-18

1.libtorch是什么

libtorch是pytorch的C++版本,支持CPU端和GPU端的部署和训练。由于python和c++的语言特性,因此用pytorch做模型训练,libtorch做模型部署。

用libtorch部署pytorch模型,而不是用tensorrt等工具部署模型的优势在于:pytorch和libtorch同属一个生态,API语句比较接近,并且不会出现某网络层不支持的问题。

Note that LibTorch is only available for C++.

2.libtorch如何下载

libtorch的下载链接,如下图所示,libtorch有release和debug版本可以选择。
在这里插入图片描述
注意:最新版本的pytorch和libtorch(1.11.0)已经不支持windows系统下的CUDA10.2,如下图所示。解决方法:windows下使用CUDA11.3,或者不使用最新版本的pytorch和libtorch,1.10版本是支持windows下的pytorch的。老版本的libtorch下载请参考这篇博客
在这里插入图片描述

3.libtorch在windows下如何使用

libtorch解压后如下图所示:

最核心的是include和lib这两个文件夹。其实,不管是libtorch,还是别的tensorrt、openvino等模型部署工具,其本质都是给用户提供include和lib去使用。
在这里插入图片描述
下面讲解下libtorch在windows下如何在VS中使用。
3.1在VS的包含目录中添加libtorch的头文件
在这里插入图片描述
3.2 在VS的库目录中添加libtorch的库文件
在这里插入图片描述
3.3 在VS中添加附加依赖项
在这里插入图片描述
libtorch的所有依赖项如下,可以直接粘贴使用。

asmjit.lib
c10.lib
c10_cuda.lib
caffe2_detectron_ops_gpu.lib
caffe2_module_test_dynamic.lib
caffe2_nvrtc.lib
Caffe2_perfkernels_avx.lib
Caffe2_perfkernels_avx2.lib
Caffe2_perfkernels_avx512.lib
clog.lib
cpuinfo.lib
dnnl.lib
fbgemm.lib
fbjni.lib
kineto.lib
libprotobuf-lite.lib
libprotobuf.lib
libprotoc.lib
mkldnn.lib
pthreadpool.lib
pytorch_jni.lib
torch.lib
torch_cpu.lib
torch_cuda.lib
XNNPACK.lib

3.4 错误:c2872 std 不明确的符号
解决方法:将 VS配置中的符合模式 改为否,问题解决。如下图所示。
在这里插入图片描述
3.5 Torch::cuda::is_available()返回值为False的解决办法:
在链接器中 -> 命令行 -> 其他选项,添加如下内容:

/INCLUDE:?warp_size@cuda@at@@YAHXZ

在这里插入图片描述
如果还没解决的话,可以参考下图,亲测有效:
在这里插入图片描述

4.libtorch推理YOLOv5的例子

这篇博客写的较为详细,推荐看这篇博客。

5.libtorch模型转换方法

官方教程链接Converting to Torch Script via Tracing

#例子
import torch
import torchvision

# An instance of your model.
model = torchvision.models.resnet18()

# An example input you would normally provide to your model's forward() method.
example = torch.rand(1, 3, 224, 224)

# Use torch.jit.trace to generate a torch.jit.ScriptModule via tracing.
traced_script_module = torch.jit.trace(model, example)

# save model
traced_script_module.save("traced_resnet_model.pt")
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Libtorch的介绍与使用方法 的相关文章

随机推荐

  • 双机热备,如何用浮动IP跨网络访问异地服务

    环境是这样的 本地有两台服务器A B A 192 168 151 170 主 B 192 168 151 171 备 双机的浮动IP 192 168 151 174 承载网IP 10 182 254 164 异地服务端 172 16 122
  • python怎么去除字符串的空格、回车

    内容取此 str 123 456 print str strip 去除左右两边的空格 print str lstrip 去除左边的空格 print str rstrip 去除右边的空格 print str replace 去除字符串全部空格
  • ELK详解(十七)——filebeat输出到Redis和Elasticsearch实战

    今天继续给大家介绍Linux运维相关知识 本文主要内容是使用filebeat将日志输出到Redis和Elasticsearch的实战配置 在ELK详解 十六 filebeat安装与使用一文中 我们介绍了filebeat的安装 部署和简单应用
  • 基于SpringBoot-Dubbo的微服务快速开发框架

    简介 基于Dubbo的分布式 微服务基础框架 为前端提供脚手架开发服务 结合前一篇 Web AP快速开发基础框架 可快速上手基于Dubbo的分布式服务开发 项目代码 https github com backkoms web service
  • 微信小程序最新获取头像昵称方式

    前言 版本历史变迁 一 获取头像的正确姿势 二 获取昵称的正确姿势 总结 前言 产品需要获取微信用户的昵称和头像 这这还不简单 so easy 通过wx getUserProfile或者 wx getUserInfo 就可以获取到 但是获取
  • Nacos安装配置详细流程

    快速导航 1 Nacos安装 1 1概述 1 2 下载 1 3 安装 1 4 启动和关闭 1 5 测试 2 Nacos持久化 2 1为什么持久化 2 2配置Nacos持久化 2 2 1 切换数据库 2 2 2 初始化数据库 2 2 3 测试
  • tensorflow LeNet

    LeNet 即 LeNet5 由 Yann LeCun 在 1998 年提出 做为最早的卷积神经网络之一 是许 多神经网络架构的起点 其网络结构如图 下所示 借鉴点 共享卷积核 减少网络参数 在后期发展中 降采样层被 m a x p o o
  • HTML5 canvas 圆环扩散效果

    canvas 圆环扩散效果 使用 HTML5 canvas 制作圆环扩散的效果 以下是效果图 下面是实现代码 仅供参考 转载请注明出处 如有问题请联系 页面元素
  • TensorFlow2学习(三):keras 函数api

    文章目录 1构建简单的网络 1 1创建网络 1 2训练 验证及测试 1 3模型保持和序列化 2 使用共享网络创建多个模型 3 复杂网络结构构建 3 1多输入与多输出网络 3 2小型残差网络 4 共享网络层 5 模型复用 6 自定义网络层 完
  • quartus 中出现的问题总结

    quartus 中出现的问题总结 下面展示报错 A code block Start time 16 27 28 on Mar 25 2020 Error vsim 3170 Could not find fulladder1 vlg ts
  • 机器学习&数据挖掘:特征选择之 wrapper approach

    在前面简要介绍了特征选择的Filter方法 由于Filter方法还有很多 在此不能一一介绍 Filter方法从原始特征中选择特征子集 用于后续的机器学习算法 由于Filter在特征选择时 没有考虑到所用的机器学习算法模型 可能会导致选择出的
  • git命令学习——将本地代码推送到远程新建仓库

    在远程 如gitee 中新建一个仓库后复制仓库链接 打开git Bash或者CMD 初始化本地仓库 git init 添加全部修改的文件 git add 注意不要漏了 编写提交说明 git commit m 提交说明 连接远程仓库 git
  • S3C2440之LCD的初始化配置

    pre class objc pre class objc define LADDR 0x30800000 define HMIX 240 define VMIX 320 unsigned short addrbuf unsigned sh
  • 15种常用ARGB颜色

  • 【原创】always语句 和 initial语句

    过程语句 有 always语句 和 initial语句 相同点 1 always语句 和 initial语句 可以多次使用 2 always语句 和 initial语句 各语句块 整体 是独立运行 3 always语句 和 initial语
  • Qt数据库表格添加右键选项功能及右键按钮可能不显示问题解决方法

    Qt数据库表格添加右键选项功能及右键按钮可能不显示问题解决方法 文章目录 Qt数据库表格添加右键选项功能及右键按钮可能不显示问题解决方法 1 前言 2 思路及主要代码 3 注意点 右键时按钮不出现 4 结果 1 前言 Qt数据库操作中大部分
  • Object Detection(目标检测神文)

    目标检测神文 非常全而且持续在更新 转发自 https handong1587 github io deep learning 2015 10 09 object detection html 如有侵权联系删除 更新时间 20190226
  • [OpenAirInterface实战-15] :OAI 软件无线电USRP B210硬件详解

    作者主页 文火冰糖的硅基工坊 文火冰糖 王文兵 的博客 文火冰糖的硅基工坊 CSDN博客 本文网址 https blog csdn net HiWangWenBing article details 121088307 目录 第1章 通用无
  • [油猴脚本] 回到顶部

    1 思路解析 生成一个按钮 点击时回到顶部 2 脚本下载及源代码 详见https greasyfork org zh CN scripts 459651 E5 9B 9E E5 88 B0 E9 A1 B6 E9 83 A8
  • Libtorch的介绍与使用方法

    Libtorch的介绍与使用方法 1 libtorch是什么 2 libtorch如何下载 3 libtorch在windows下如何使用 4 libtorch推理YOLOv5的例子 5 libtorch模型转换方法 1 libtorch是