win7 vs2017 程序报错_windows + VS2017 配置libpytorch
因?yàn)轫?xiàng)目對(duì)實(shí)時(shí)性的要求,嘗試一波c++直接調(diào)用libpytorch。實(shí)現(xiàn)的同時(shí),整理了網(wǎng)上的相關(guān)資料,希望對(duì)效率追求的同學(xué)提供一份幫助。
0.下載準(zhǔn)備
下載安裝VS2017 和 cmake (3.0版本以上)
記得把bin目錄添加到環(huán)境變量path中。這里解釋一下,目前還不能直接使用VS直接配置成功libpytorch(如果讀者成功了可以@我,這篇文檔也就完成了使命就刪了),而是先借助cmake先編譯,達(dá)到曲線救國(guó)。
下載安裝opencv
可以參考博客:https://blog.csdn.net/qq_41175905/article/details/80560429,該博客中寫(xiě)的很詳細(xì)。推薦opencv4.1.0
下載libtorch
下載地址:https://pytorch.org/get-started/locally/,這個(gè)根據(jù)自己情況選擇下載,因?yàn)槲易约旱氖莄uda10,并且我選擇使用release版本,所以我的選擇如下:
1. 準(zhǔn)備文件
接下來(lái)使用cmake來(lái)進(jìn)行配置吧,我們首先自己創(chuàng)建一個(gè)文件夾,存放我們的主程序main.cpp還有CMakeLists.txt,然后我們?cè)賱?chuàng)建一個(gè)build的空文件夾,之后我們編譯好的文件都存放在build文件夾里頭。
目錄結(jié)構(gòu)大概就是這樣,假設(shè)這個(gè)文件夾存放在D盤(pán):
example:
- build (文件夾)
- torchscript.py
- model.pt(由 python torchscript.py 生成)
- main.cpp
- CMakeLists.txt
touchscript.py
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) traced_script_module.save("model.pt")通過(guò)python touchscript.py ,則會(huì)生成我們上面main.cpp 需要的model.pt文件。
main.cpp
#include <torch/script.h> // One-stop header. #include <iostream> #include <memory>int main() {// Deserialize the ScriptModule from a file using torch::jit::load().torch::jit::script::Module module = torch::jit::load("F:/LabSources/PytorchCmake/model.pt");assert(module != nullptr);std::cout << "okn";// 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.torch::Tensor output = module.forward(inputs).toTensor();std::cout << output.slice(/*dim=*/1, /*start=*/0, /*end=*/5) << 'n';while (1); }這是目前比較新的代碼,舊的代碼因?yàn)槭菧y(cè)試版會(huì)出現(xiàn)語(yǔ)法錯(cuò)誤,見(jiàn) https://blog.csdn.net/qq_33507306/article/details/104427134
CMakeLists.txt
cmake_minimum_required(VERSION 3.12 FATAL_ERROR) project(example-app)set(CMAKE_PREFIX_PATH "D:Space.DeveloplibtorchsharecmakeTorch") find_package(Torch REQUIRED) find_package(OpenCV REQUIRED)if(NOT Torch_FOUND)message(FATAL_ERROR "Pytorch Not Found!") endif(NOT Torch_FOUND)message(STATUS "Pytorch status:") message(STATUS " libraries: ${TORCH_LIBRARIES}")message(STATUS "OpenCV library status:") message(STATUS " version: ${OpenCV_VERSION}") message(STATUS " libraries: ${OpenCV_LIBS}") message(STATUS " include path: ${OpenCV_INCLUDE_DIRS}")add_executable(example-app example-app.cpp) target_link_libraries(example-app ${TORCH_LIBRARIES} ${OpenCV_LIBS}) set_property(TARGET example-app PROPERTY CXX_STANDARD 11)其中,如果沒(méi)有set(CMAKE_PREFIX_PATH "D:Space.Develop libtorchsharecmakeTorch"),可能有的同學(xué)會(huì)報(bào)錯(cuò)找不到Torch的錯(cuò)誤。
2. Cmake編譯
Cmake有GUI編譯和命令行編譯,本文主要操作GUI為主,命令行編譯請(qǐng)見(jiàn)https://zhuanlan.zhihu.com/p/55292836。
首先我們打開(kāi)cmake軟件,然后打開(kāi)我們創(chuàng)建的目錄,我的目錄是F:/LabSource/Pytorch Cmake, 填好兩個(gè)目錄(創(chuàng)建目錄和其中的bin目錄)。
選擇generator,選擇64位,因?yàn)镃UDA不支持32位運(yùn)算。
點(diǎn)擊Configure,沒(méi)問(wèn)題的話再點(diǎn)擊Configure,然后再點(diǎn)擊Generate就成功了。
如果遇到以下錯(cuò)誤:
則我們根據(jù)錯(cuò)誤,遇到下載缺少的資源,配在紅色區(qū)域。(紅色區(qū)域并不是都是錯(cuò)誤,引起錯(cuò)誤的是報(bào)錯(cuò)信息里日志里提示的缺少資源的NotFound)。
解決辦法: 上圖所示問(wèn)題需要我們下載對(duì)應(yīng)版本的CUDNN,并將資源配置(include、lib等)在對(duì)應(yīng)的變量里。如下:
最后,如果日志出現(xiàn)warning,雖然也是紅色警報(bào),但是也可以繼續(xù)Generate。進(jìn)入下一步。
3. VS2017啟動(dòng)
然后打開(kāi)build文件夾中的vcxporj文件,設(shè)置項(xiàng)目為啟動(dòng)項(xiàng)目,并更改為release的x64模式,生成解決方案。
最后,還可能遇到兩中情況:
1.如果提示缺少dll,可以把LibTorch的lib文件夾加入環(huán)境變量,
可以把lib文件夾的dll全拷到cpp目錄下。
2.無(wú)法定位程序輸入點(diǎn)到xxx.dll,
解決辦法: 則到pytorchlib下面找到放到C:WindowsSystem32和C:WindowsSysWOW64下即可。
4.輸出
已經(jīng)配置好啦,希望大家都配置成功。
好的教程鏈接,本文基于以下教程更新:
https://blog.csdn.net/gulingfengze/article/details/92013360
https://zhuanlan.zhihu.com/p/68901339
https://zhuanlan.zhihu.com/p/55292836
問(wèn)題解決鏈接:
https://www.cnblogs.com/yeshengCqupt/p/10448476.html
https://www.lizenghai.com/archives/29637.html
https://blog.csdn.net/qq_33507306/article/details/104427134
https://www.cnblogs.com/xym4869/p/11255598.html
總結(jié)
以上是生活随笔為你收集整理的win7 vs2017 程序报错_windows + VS2017 配置libpytorch的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 计算字符位置
- 下一篇: 数据线给电脑联网是什么原理_物联网孵化的