问题描述:

按照PyTorch中文教程的【 在 C++ 中加载 PYTORCH 模型 】一文,尝试调用 PyTorch模型。

1. 例子来源

在 C++ 中加载 PYTORCH 模型

我是使用Qt新建纯C++工程,然后CMake编译、运行的,直接贴代码:

1.1 C++代码

main.cpp

#include <torch/script.h> // One-stop header.
#include <torch/torch.h>
#include <iostream>
#include <memory>using namespace std;int main()
{//    std::shared_ptr<torch::jit::script::Module> module = torch::jit::load(
//                "/home/book/Jupyterlab work/model.pt");torch::jit::script::Module module = torch::jit::load("/home/book/Jupyterlab work/model.pt");// Create a vector of inputs.std::vector<torch::jit::IValue> inputs;inputs.push_back(torch::ones({1, 3, 224, 224}));// Execute the model and turn its output into a tensor.at::Tensor output = module.forward(inputs).toTensor();std::cout << output.slice(/*dim=*/1, /*start=*/0, /*end=*/5) << 'n'; //与前面python的输出是一样的!std::cout << "okn";
}

那么我遇到的与原例子冲突的地方是:

//原例子中的代码:
std::shared_ptr<torch::jit::script::Module> module = torch::jit::load(argv[1]);//我改后的代码:
torch::jit::script::Module module = torch::jit::load(argv[1]);

使用原例子中的代码,会报出如下的错误:

/home/book/qt5.12/example-app/main.cpp:16: error:
conversion from ‘torch::jit::script::Module’ to non-scalar type ‘std::shared_ptr<torch::jit::script::Module>’ requested
std::shared_ptr<torch::jit::script::Module> module = torch::jit::load(                                                                           ^

报错内容

解决方案:

conversion to non-scalar type torch::jit::load("model.pt") · Issue #22382 · pytorch/pytorch

亲测有效!

但是,这也引入了新的问题,'nightly build' 表示什么?联系到前面下载LibTorch时的下载地址,其中也出现了'nightly',二者之间是不是有所关联,难道我下载的LibTorch版本不对?

貌似nightly build 版本意思是没有正式发布的,这种说法有待考证。

nightly build 版本的 libtorch

1.2 CMakeLists.txt

cmake_minimum_required(VERSION 3.5)project(example-app LANGUAGES CXX)set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)set(Torch_DIR /home/book/libtorch/share/cmake/Torch)
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 11)

可能会用到的链接:

(1)libtorch初体验 - 一度逍遥 - 博客园 (加载 "xxx.pt" 模型)

(2)ubuntu16.04改变桌面图标大小显示-百度经验 (ubuntu 使用技巧)

(3)pytorch/pytorch

(4)Update our cpp export tutorial by Krovatkin · Pull Request #560 · pytorch/tutorials

(5)conversion to non-scalar type torch::jit::load("model.pt") · Issue #22382 · pytorch/pytorch (靠这个解决的问题!)

(6)walktree/libtorch-yolov3

pytorch yolov3 代码详解_PyTorch C++ libtorch的使用方法(1)-nightly 版本的 libtorch相关推荐

  1. yolov3代码详解(七)

    Pytorch | yolov3代码详解七 test.py test.py from __future__ import divisionfrom models import * from utils ...

  2. Keras YOLOv3代码详解(三):目标检测的流程图和源代码+中文注释

    Keras YOLOv3源代码下载地址:https://github.com/qqwweee/keras-yolo3 YOLOv3论文地址:https://pjreddie.com/media/fil ...

  3. yoloV3代码详解(注释)

    原文链接:https://www.cnblogs.com/hujinzhou/p/guobao_2020_3_13.html yolo3各部分代码详解(超详细) </h1><div ...

  4. yolov3代码详解_代码资料

    faster RCNN TensorFlow版本: 龙鹏:[技术综述]万字长文详解Faster RCNN源代码(一) buptscdc:tensorflow 版faster rcnn代码理解(1) l ...

  5. fasterrcnn tensorflow代码详解_pytorch目标检测代码的一些bug调试

    这几天一直在做调包侠,是时候来总结总结了.记录一些我所遇到的不常见的问题. faster rcnn: 参考代码: jwyang/faster-rcnn.pytorch​github.com pytor ...

  6. YOLOv3 代码详解(2) —— 数据处理 dataset.py解析:输入图片增强、制作模型的每层输出的标签

    前言: yolo系列的论文阅读 论文阅读 || 深度学习之目标检测 重磅出击YOLOv3 论文阅读 || 深度学习之目标检测yolov2 论文阅读 || 深度学习之目标检测yolov1   该篇讲解的 ...

  7. Pytorch | yolov3原理及代码详解(一)

    YOLO相关原理 : https://blog.csdn.net/leviopku/article/details/82660381 https://www.jianshu.com/p/d13ae10 ...

  8. 标准oc算法的推导与99行代码详解

    文章目录 标准oc算法的推导与代码详解 问题描述 OC算法的数学描述 结果展示 OC算法的matlab代码及注释 参考文献 标准oc算法的推导与代码详解 对于变密度的参数化方法,设计变量x为材料相对密 ...

  9. Pytorch | yolov3原理及代码详解(二)

    阅前可看: Pytorch | yolov3原理及代码详解(一) https://blog.csdn.net/qq_24739717/article/details/92399359 分析代码: ht ...

最新文章

  1. 【转】C++ const用法 尽可能使用const
  2. python turtle 绘图速度用函数会快吗_有趣的Python turtle绘图
  3. yii2 ajax分页,Yii框架分页技术实例分析
  4. 7005.element-ui组件
  5. quartz集群重复调度的解决
  6. Hvv近期0day总结五
  7. 利用服务端session保存用户信息
  8. excel游戏_Excel集中游戏
  9. Java SE学习练习题--IO、List 配合使用
  10. win10默认壁纸位置
  11. 安利一个很棒的html背景图片网站
  12. Roundpic:超简单的在线图片圆角处理~
  13. 优酷视频如何登录优酷账号?
  14. selenium 浏览器复用(java)
  15. perl与c相互调用
  16. selenium 处理多浏览器测试
  17. 小学生台灯哪个品牌更护眼?学习专用的护眼台灯品牌
  18. javascript实现的淘宝五星评价(版本2)
  19. 将element-plus分页组件由默认英文,改为中文
  20. Linux 基金会发布《开源软件供应链安全报告》

热门文章

  1. Kettle资源库-元数据
  2. DWR第四篇之对象传参
  3. XCode6 ,iOS之PCH文件配置
  4. 浏览器桌面通知(notifications)
  5. 直指Adobe的龌龊行径
  6. [转载] NumPy Beginner‘s Guide 2e 带注释源码 七、NumPy 特殊例程
  7. [转载] numpy.inf
  8. [转载] Python十大装B语法
  9. 单工、半双工、双工通信详解
  10. 没有编辑器时,使用echo更换源