• 欢迎访问开心洋葱网站,在线教程,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎加入开心洋葱 QQ群
  • 为方便开心洋葱网用户,开心洋葱官网已经开启复制功能!
  • 欢迎访问开心洋葱网站,手机也能访问哦~欢迎加入开心洋葱多维思维学习平台 QQ群
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏开心洋葱吧~~~~~~~~~~~~~!
  • 由于近期流量激增,小站的ECS没能经的起亲们的访问,本站依然没有盈利,如果各位看如果觉着文字不错,还请看官给小站打个赏~~~~~~~~~~~~~!

Pytorch1.0的(C++ & cpu)版本在Windows上的使用

人工智能 _寒潭雁影 1766次浏览 0个评论

之前一直用Pytorch做的网络训练,最近想看看训练出来的模型在C++上的表现(毕竟稍微注重效率的工程都用的C++写),因此花了点时间研究了一波。   因为PyTorch的Python版本和C++版本使用的文件描述有区别,因此需要先把Python版本训练的模型转换成Torch Script形式(相信这一点不太方便的地方后面会被FB大佬们改掉的)。   转换的代码如下:  

import torch
import torchvision

# 读取resnet18模型
model = torchvision.models.resnet18()
# 创建一个输入样例
example = torch.rand(1, 3, 224, 224)
# 初始化模型转换工具
traced_script_module = torch.jit.trace(model, example)
# 转换模型
traced_script_module.save("resnet18.pt")

  用上面的代码得到模型文件“resnet18.pt”,准备的工作就做完了。   下面到官网下载程序包  
在这里插入图片描述   解压完里面是这样的  
Pytorch1.0的(C++ & cpu)版本在Windows上的使用   感觉很亲切,因为基本上所有的库都长这鸟样。下一步也跟所有其他库一样,我们新建一个C++工程,然后把上图中的“include”和“lib”往里面扔,再添加到工程里面的“包含目录”和“库目录”即可。   链接库一般会用到下面三个,添加进去  

torch.lib
c10.lib
caffe2.lib

  到这步就基本做完了。但编译会出错,需要再设置两项参数:   第一项:属性->C/C++ ->常规->SDL检查->否   第二项:属性->C/C++ ->语言->符号模式->否   搞定!   完成了上面简单的配置,用下面的代码就可以在c++上运行程序啦(编译出来缺少dll,则在之前下的libtorch包里面找)!  

#include <torch/script.h>
#include <iostream>
#include <memory>

int main()
{
	// 读取网络模型
	std::shared_ptr<torch::jit::script::Module> module = torch::jit::load("resnet18.pt");
	assert(module != nullptr);
	std::cout << "读取正常\n";
	// 创建输入
	std::vector<torch::jit::IValue> inputs;
	inputs.push_back(torch::ones({ 1, 3, 224, 224 }));
	// 数据输入网络,获得输出
	at::Tensor output = module->forward(inputs).toTensor();
	std::cout << output.slice(/*dim=*/1, /*start=*/0, /*end=*/5) << std::endl;
}

  参考文章:https://blog.csdn.net/weixin_41576121/article/details/85110423


开心洋葱 , 版权所有丨如未注明 , 均为原创丨未经授权请勿修改 , 转载请注明Pytorch1.0的(C++ & cpu)版本在Windows上的使用
喜欢 (0)

您必须 登录 才能发表评论!

加载中……