LibTorch: 用C++运行深度神经网络

请添加图片描述

1.概述

深度学习领域的盆友们想必对PyTorch不陌生,作为近些年来深度学习框架中的佼佼者,PyTorch在学术领域攻城略地。但该框架的实际名字应该是Torch,而PyTorch只是Torch的Python版本,相应地,也有一个C++版本,称为LibTorch。那LibTorch有什么用呢?

别急,我们先讲讲TorchScript吧。在Torch中提供了TorchScript的方法,可以将nn.Module的子类转化为一种中间模型,也即ScriptModule,该模型存储在磁盘后,可以被PyTorch或者LibTorch直接调用,用于推理。

由于PyTorch非常方便,所以通常都是用它调试完模型后,输出模型为ScriptModule,之后用LibTorch直接调用,这就是所谓部署。除模型外的其他功能可以用C++实现,因为C++通常运行更快,所以这样可以获得更高的效率。

上面是LibTorch常常被使用的方式,它的第二个使用方式是可以直接用C++编写神经网络。当然C++写起来可能不像Python那么顺溜,但是某些情况下确实是有这个需求的。

2.详述

这里的详述主要是搬点链接然后做个补充。

TorchScript可以参考:
点击实现暴富

  • 这篇文章指出,TorchScript有两种生成方法,Tracing用于不存在控制流的情况,Scripting用于存在控制流的情况。讲道理,都用Scripting就可以了,不知为什么还需要有一个Tracing。这是我个人的疑惑。

LibTorch调用TorchScript模型可以参考:
点击找到女朋友

  • 这里下载LibTorch库,最好不要用1.7的版本,我用了之后编译有问题,我用1.8.1则很正常。
  • 文章里的CMakeLists.txt无法找到依赖包,补充为:
cmake_minimum_required(VERSION 3.0 FATAL_ERROR)
project(custom_ops)

#主要是补充这个libtorch包的路径,否则找不到它的
#路径记得改成自己的哦
set(CMAKE_PREFIX_PATH ~/桌面/libtorch-cxx11-abi-shared-with-deps-1.8.1+cpu/libtorch)
find_package(Torch REQUIRED)

add_executable(example-app main.cpp)
target_link_libraries(example-app "${TORCH_LIBRARIES}")
set_property(TARGET example-app PROPERTY CXX_STANDARD 14)

更多的待补充…

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值