精华内容
下载资源
问答
  • PyTorch如今发布到1.1稳定版本,...LibTorch安装虽然说安装,其实就是下载官方的LibTorch包而已,从[官方网站](PyTorch)中选择PyTorch(1.1),libtorch,以及cuda的版本,其中会出现下载链接,这里为cuda9.0的链接h...

    PyTorch如今发布到1.1稳定版本,新增的功能让模型部署变得更为地简单,本文记录如何利用C++来调用PyTorch训练好的模型,其实也是利用官方强大的LibTorch库。

    LibTorch的安装

    虽然说安装,其实就是下载官方的LibTorch包而已,从[官方网站](PyTorch)中选择PyTorch(1.1),libtorch,以及cuda的版本,其中会出现下载链接,这里为cuda9.0的链接

    https://download.pytorch.org/libtorch/cu90/libtorch-shared-with-deps-latest.zip

    下载好找个路径解压。解压完放在那不动!!!

    PyTorch模型训练

    这里我使用了最为简单ResNet50的预训练模型,其中保存跟踪模型的代码如下:

    import 

    注意这里使用的是 jit 中的trace跟踪模型的方式,毫无疑问最后的输入的能够得到飞机的类别,ImageNet1000类的序号类别可以参考[此处](https://blog.csdn.net/weixin_41770169/article/details/80482942)

    通过该代码能够在根目录下产生一个 resnet.pt 的文件,这个文件就是接下来C++所需要调用的。

    C++调用训练好的模型

    在写C++调用模型的代码之前,先写好CMakeLists文件:

    cmake_minimum_required

    其中要设置好CMAKE_PREFIX_PATH路径,这个路径就是我们解压libtorch的路径,不然无法链接到libtorch库,其中也设置了OpenCV的配置,具体OpenCV的安装这里介绍了。

    然后就是C++调用PyTorch模型的代码

    #include 

    其中TorchTest函数只是做了简单的演示,而Classfier通过OpenCV读取图片,并通过libtorch的函数将Mat格式转换成Tensor(注意:这里转换了维度,因为OpenCV的维度是[H,W,C], 而PyTorch模型需要的是[C,H,W]),最后依然能够输出和Python代码一样的答案。

    这里比较重要的几个函数有:

    torch::from_blob(): 这个函数将`Mat`类型转换成`Tensor`类型。

    torch::jit::load(): 该函数顾名思义就是加载模型的函数。

    module->forward(): 模型前向传播的函数,输入值建议使用vector类型

    max(): 这个函数是libtorch中的max,返回c++中的tuple类型(第一个值为维度上最大值,第二个值为最大值的序号)所以使用std::get<1>(max_result)来取出序号,这是tuple类型取出方式。

    展开全文
  • 在windows10下安装libtorchpytorch1.0)

    万次阅读 2018-12-14 15:00:13
    安装pytorch1.0 去 https://pytorch.org/get-started/locally/ 寻找自己需要得版本 在我环境下得命令是: ...顺带安装以下libtorch 命令是 Download here: https://download.pytorch.org/l...

    1.0允许现有的Python模型转换为可以加载和执行的序列化表示 纯粹来自C ++,不依赖于Python。也就是说可以只用c++来编写模型的预测阶段(当然训练也可以,只是开发起来比较慢,,还是推荐python训练,然后转换成c++模型,用c++来写前向)。
    pytorch的c++接口,PyTorch C ++ API - 也称为LibTorch。一般来说,用python接口来训练模型,然后转换成c++模型,再用c++重写前向是一个比较常见的模式。我也是刚刚才开始学习,希望大家能一起学习讨论。

    一 安装pytorch1.0

    https://pytorch.org/get-started/locally/ 寻找自己需要得版本(网上有一些教程的命令只是适合他们环境的,适合自己的还需要从这里选)
    screen shot
    在我环境下得命令是:

    conda install pytorch torchvision cuda80 -c pytorch

    其他cuda版本的命令:

    NO CUDA:

    conda install pytorch-cpu torchvision-cpu -c pytorch

    CUDA9.0:

    conda install pytorch torchvision -c pytorch

    或者选择pip安装

    Python 2.7

    pip install https://download.pytorch.org/whl/cpu/torch-1.0.0-cp27-cp27mu-linux_x86_64.whl
    pip install torchvision

    if the above command does not work, then you have python 2.7 UCS2, use this command

    pip install https://download.pytorch.org/whl/cpu/torch-1.0.0-cp27-cp27m-linux_x86_64.whl

    Python 3.5

    pip3 install https://download.pytorch.org/whl/cpu/torch-1.0.0-cp35-cp35m-win_amd64.whl
    pip3 install torchvision

    Python 3.6

    pip3 install https://download.pytorch.org/whl/cpu/torch-1.0.0-cp36-cp36m-win_amd64.whl
    pip3 install torchvision

    Python 3.7

    pip3 install https://download.pytorch.org/whl/cpu/torch-1.0.0-cp37-cp37m-win_amd64.whl
    pip3 install torchvision

    CUDA8.x:

    conda install pytorch torchvision cuda80 -c pytorch

    pip安装
    Python 3.5

    pip3 install https://download.pytorch.org/whl/cu80/torch-1.0.0-cp35-cp35m-win_amd64.whl
    pip3 install torchvision

    Python 3.6

    pip3 install https://download.pytorch.org/whl/cu80/torch-1.0.0-cp36-cp36m-win_amd64.whl
    pip3 install torchvision

    Python 3.7

    pip3 install https://download.pytorch.org/whl/cu80/torch-1.0.0-cp37-cp37m-win_amd64.whl
    pip3 install torchvision

    CUDA10.0:

    conda install pytorch torchvision cuda100 -c pytorch

    cuda10好像不支持py27

    Python 3.5

    pip3 install https://download.pytorch.org/whl/cu100/torch-1.0.0-cp35-cp35m-win_amd64.whl
    pip3 install torchvision

    Python 3.6

    pip3 install https://download.pytorch.org/whl/cu100/torch-1.0.0-cp36-cp36m-win_amd64.whl
    pip3 install torchvision

    Python 3.7

    pip3 install https://download.pytorch.org/whl/cu100/torch-1.0.0-cp37-cp37m-win_amd64.whl
    pip3 install torchvision

    source 安装

    安装依赖

    conda install numpy pyyaml mkl mkl-include setuptools cmake cffi typing
    If you want to build on Windows, Visual Studio 2017 14.11 toolset and NVTX are also needed. Especially, for CUDA 8 build on Windows, there will be an additional requirement for VS 2015 Update 3 and a patch for it. The details of the patch can be found out here.

    Build

    git clone --recursive https://github.com/pytorch/pytorch
    cd pytorchset “VS150COMNTOOLS=C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Auxiliary\Build”
    set CMAKE_GENERATOR=Visual Studio 15 2017 Win64
    set DISTUTILS_USE_SDK=1
    REM The following two lines are needed for Python 2.7, but the support for it is very experimental.
    set MSSdk=1
    set FORCE_PY27_BUILD=1
    REM As for CUDA 8, VS2015 Update 3 is also required to build PyTorch. Use the following two lines.
    set “PREBUILD_COMMAND=%VS140COMNTOOLS%…\VC\vcvarsall.bat”
    set PREBUILD_COMMAND_ARGS=x64
    call “%VS150COMNTOOLS%\vcvarsall.bat” x64 -vcvars_ver=14.11
    python setup.py install

    顺带安装一下libtorch
    screen shot
    命令是

    Download here:
    https://download.pytorch.org/libtorch/cu80/libtorch-win-shared-with-deps-latest.zip

    二 模型转换(TorchScript)

    官网网址:https://pytorch.org/docs/master/jit.html
    参考网址:https://pytorch.org/tutorials/advanced/cpp_export.html

    step 1:将pytorch模型转换为torch脚本

    主要有两种方法:

    1. 用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)
    
    In[1]: output = traced_script_module(torch.ones(1, 3, 224, 224))
    In[2]: output[0, :5]
    Out[2]: tensor([-0.2698, -0.0381,  0.4023, -0.3010, -0.0448], grad_fn=< SliceBackward >)
    
    1. 用annotation转换
    import torch
    class MyModule(torch.nn.Module):
        def __init__(self, N, M):
            super(MyModule, self).__init__()
    
        def forward(self, input):
            if input.sum() > 0:
              output = self.weight.mv(input)
            else:
              output = self.weight + input
            return output
    
    import torch
    
    class MyModule(torch.jit.ScriptModule):
       def __init__(self, N, M):
           super(MyModule, self).__init__()
           self.weight = torch.nn.Parameter(torch.rand(N, M))
    
       @torch.jit.script_method
       def forward(self, input):
           if input.sum() > 0:
             output = self.weight.mv(input)
           else:
             output = self.weight + input
           return output
    
    my_script_module = MyModule()
    

    step 2:保存模型

    traced_script_module.save(“model.pt”)

    step 3:用c++加载模型

    示例代码:

    #include <torch/script.h> // One-stop header.
    
    #include <iostream>
    #include <memory>
    
    int main(int argc, const char* argv[]) {
      if (argc != 2) {
        std::cerr << "usage: example-app <path-to-exported-script-module>\n";
        return -1;
      }
    
      // Deserialize the ScriptModule from a file using torch::jit::load().
      std::shared_ptr<torch::jit::script::Module> module = torch::jit::load(argv[1]);
    
      assert(module != nullptr);
      std::cout << "ok\n";
    }
    
    用cmake编译

    CMakeLists.txt示例

    cmake_minimum_required(VERSION 3.0 FATAL_ERROR)
    project(custom_ops)
    find_package(Torch REQUIRED)
    add_executable(example-app example-app.cpp)
    target_link_libraries(example-app “${TORCH_LIBRARIES}”)
    set_property(TARGET example-app PROPERTY CXX_STANDARD 11)

    目录结构

    libtorch/
    bin/
    include/
    lib/
    share/

    1. lib/文件夹包含您必须链接的共享库,
    2. include/文件夹包含程序需要包含的头文件,
    3. share/包含必要的CMake配置,以启用上面的简单find_package(Torch)命令。

    最后一步是构建应用程序。为此,假设我们的示例目录布局如下:

    example-app/
    CMakeLists.txt
    example-app.cpp

    执行命令:

    mkdir build
    cd build
    cmake -DCMAKE_PREFIX_PATH=/path/to/libtorch …
    make

    输出结果:

    root@4b5a67132e81:/example-app# mkdir build
    root@4b5a67132e81:/example-app# cd build
    root@4b5a67132e81:/example-app/build# cmake -DCMAKE_PREFIX_PATH=/path/to/libtorch …
    – The C compiler identification is GNU 5.4.0
    – The CXX compiler identification is GNU 5.4.0
    – Check for working C compiler: /usr/bin/cc
    – Check for working C compiler: /usr/bin/cc – works
    – Detecting C compiler ABI info
    – Detecting C compiler ABI info - done
    – Detecting C compile features
    – Detecting C compile features - done
    – Check for working CXX compiler: /usr/bin/c++
    – Check for working CXX compiler: /usr/bin/c++ – works
    – Detecting CXX compiler ABI info
    – Detecting CXX compiler ABI info - done
    – Detecting CXX compile features
    – Detecting CXX compile features - done
    – Looking for pthread.h
    – Looking for pthread.h - found
    – Looking for pthread_create
    – Looking for pthread_create - not found
    – Looking for pthread_create in pthreads
    – Looking for pthread_create in pthreads - not found
    – Looking for pthread_create in pthread
    – Looking for pthread_create in pthread - found
    – Found Threads: TRUE
    – Configuring done
    – Generating done
    – Build files have been written to: /example-app/build
    root@4b5a67132e81:/example-app/build# make
    Scanning dependencies of target example-app
    [ 50%] Building CXX object CMakeFiles/example-app.dir/example-app.cpp.o
    [100%] Linking CXX executable example-app
    [100%] Built target example-app

    成功:

    root@4b5a67132e81:/example-app/build# ./example-app model.pt
    ok

    step 4:用c++执行前向

    / 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';
    

    结果:

    root@4b5a67132e81:/example-app/build# make
    Scanning dependencies of target example-app
    [ 50%] Building CXX object CMakeFiles/example-app.dir/example-app.cpp.o
    [100%] Linking CXX executable example-app
    [100%] Built target example-app
    root@4b5a67132e81:/example-app/build# ./example-app model.pt
    -0.2698 -0.0381  0.4023 -0.3010 -0.0448
    [ Variable[CPUFloatType]{1,5} ]
    

    python的输出结果是:

    tensor([-0.2698, -0.0381, 0.4023, -0.3010, -0.0448], grad_fn=< SliceBackward >)

    step 5:了解更多

    展开全文
  • PyTorch如今发布到1.1稳定版本,...LibTorch安装虽然说安装,其实就是下载官方的LibTorch包而已,从[官方网站](PyTorch)中选择PyTorch(1.1),libtorch,以及cuda的版本,其中会出现下载链接,这里为cuda9.0的链接h...

    PyTorch如今发布到1.1稳定版本,新增的功能让模型部署变得更为地简单,本文记录如何利用C++来调用PyTorch训练好的模型,其实也是利用官方强大的LibTorch库。

    LibTorch的安装

    虽然说安装,其实就是下载官方的LibTorch包而已,从[官方网站](PyTorch)中选择PyTorch(1.1),libtorch,以及cuda的版本,其中会出现下载链接,这里为cuda9.0的链接

    https://download.pytorch.org/libtorch/cu90/libtorch-shared-with-deps-latest.zip

    下载好找个路径解压。解压完放在那不动!!!

    PyTorch模型训练

    这里我使用了最为简单ResNet50的预训练模型,其中保存跟踪模型的代码如下:

    import torch
    import torchvision.models as models
    from PIL import Image
    import numpy as np
    image = Image.open("build/airliner.jpg") #图片发在了build文件夹下
    image = image.resize((224, 224),Image.ANTIALIAS)
    image = np.asarray(image)
    image = image / 255
    image = torch.Tensor(image).unsqueeze_(dim=0)
    image = image.permute((0, 3, 1, 2)).float()
    
    model = models.resnet50(pretrained=True)
    model = model.eval()
    resnet = torch.jit.trace(model, torch.rand(1,3,224,224))
    # output=resnet(torch.ones(1,3,224,224))
    output = resnet(image)
    max_index = torch.max(output, 1)[1].item()
    print(max_index) # ImageNet1000类的类别序
    resnet.save('resnet.pt')

    注意这里使用的是 jit 中的trace跟踪模型的方式,毫无疑问最后的输入的能够得到飞机的类别,ImageNet1000类的序号类别可以参考[此处](https://blog.csdn.net/weixin_41770169/article/details/80482942)

    通过该代码能够在根目录下产生一个 resnet.pt 的文件,这个文件就是接下来C++所需要调用的。

    C++调用训练好的模型

    在写C++调用模型的代码之前,先写好CMakeLists文件:

    cmake_minimum_required(VERSION 3.0 FATAL_ERROR)
    
    project(example_torch)
    set(CMAKE_PREFIX_PATH "XXX/libtorch") //注意这里填自己解压libtorch时的路径
    
    find_package(Torch REQUIRED)
    find_package(OpenCV 3.0 QUIET)
    if(NOT OpenCV_FOUND)
        find_package(OpenCV 2.4.3 QUIET)
        if(NOT OpenCV_FOUND)
            message(FATAL_ERROR "OpenCV > 2.4.3 not found.")
        endif()
    endif()
    add_executable(${PROJECT_NAME} "main.cpp")
    target_link_libraries(${PROJECT_NAME} ${TORCH_LIBRARIES} ${OpenCV_LIBS})
    set_property(TARGET ${PROJECT_NAME} PROPERTY CXX_STANDARD 11)```
    

    其中要设置好CMAKE_PREFIX_PATH路径,这个路径就是我们解压libtorch的路径,不然无法链接到libtorch库,其中也设置了OpenCV的配置,具体OpenCV的安装这里介绍了。

    然后就是C++调用PyTorch模型的代码

    #include <torch/torch.h>
    #include <torch/script.h>
    #include <iostream>
    #include <vector>
    #include <opencv2/highgui.hpp>
    #include <opencv2/core/core.hpp>
    #include <opencv2/opencv.hpp>
    
    void TorchTest(){
        std::shared_ptr<torch::jit::script::Module> module = torch::jit::load("../resnet.pt");
        assert(module != nullptr);
        std::cout << "Load model successful!" << std::endl;
        std::vector<torch::jit::IValue> inputs;
        inputs.push_back(torch::zeros({1,3,224,224}));
        at::Tensor output = module->forward(inputs).toTensor();
        auto max_result = output.max(1, true);
        auto max_index = std::get<1>(max_result).item<float>();
        std::cout << max_index << std::endl;
    }
    
    void Classfier(cv::Mat &image){
        torch::Tensor img_tensor = torch::from_blob(image.data, {1, image.rows, image.cols, 3}, torch::kByte);
        img_tensor = img_tensor.permute({0, 3, 1, 2});
        img_tensor = img_tensor.toType(torch::kFloat);
        img_tensor = img_tensor.div(255);
        std::shared_ptr<torch::jit::script::Module> module = torch::jit::load("../Train/resnet.pt");
        torch::Tensor output = module->forward({img_tensor}).toTensor();
        auto max_result = output.max(1, true);
        auto max_index = std::get<1>(max_result).item<float>();
        std::cout << max_index << std::endl;
    
    }
    
    int main() {
    //    TorchTest();
        cv::Mat image = cv::imread("airliner.jpg");
        cv::resize(image,image, cv::Size(224,224));
        std::cout << image.rows <<" " << image.cols <<" " << image.channels() << std::endl;
        Classfier(image);
        return 0;
    }
    

    其中TorchTest函数只是做了简单的演示,而Classfier通过OpenCV读取图片,并通过libtorch的函数将Mat格式转换成Tensor(注意:这里转换了维度,因为OpenCV的维度是[H,W,C], 而PyTorch模型需要的是[C,H,W]),最后依然能够输出和Python代码一样的答案。

    这里比较重要的几个函数有:

    torch::from_blob(): 这个函数将`Mat`类型转换成`Tensor`类型。

    torch::jit::load(): 该函数顾名思义就是加载模型的函数。

    module->forward(): 模型前向传播的函数,输入值建议使用vector类型

    max(): 这个函数是libtorch中的max,返回c++中的tuple类型(第一个值为维度上最大值,第二个值为最大值的序号)所以使用std::get<1>(max_result)来取出序号,这是tuple类型取出方式。

    展开全文
  • [UPDATE 2020/04/15] :使用OpenCV4.3 / PyTorch1.4 / LibTorch1.4重新测试本教程,为初学者更新自述文件。 [UPDATE 2020/04/25] :更新CMakeLists.txt以适合C ++ 14,并使用CUDA10.0 / PyTorch1.5 / LibTorch1.5...
  • 利用LibTorch调用PyTorch训练好的模型

    千次阅读 2019-07-08 22:41:05
    PyTorch如今发布到1.1稳定版本,新增的功能让...虽然说安装,其实就是下载官方的LibTorch包而已,从官方网站中选择PyTorch(1.1),libtorch,以及cuda的版本,其中会出现下载链接,这里为cuda9.0的链接 https://d...

    PyTorch如今发布到1.1稳定版本,新增的功能让模型部署变得更为地简单,本文记录如何利用C++来调用PyTorch训练好的模型,其实也是利用官方强大的LibTorch库。

    LibTorch的安装

    虽然说安装,其实就是下载官方的LibTorch包而已,从官方网站中选择PyTorch(1.1),libtorch,以及cuda的版本,其中会出现下载链接,这里为cuda9.0的链接
    https://download.pytorch.org/libtorch/cu90/libtorch-shared-with-deps-latest.zip
    下载好找个路径解压。解压完放在那不动!!

    PyTorch模型训练

    这里我使用了最为简单ResNet50的预训练模型,其中保存跟踪模型的代码如下:

    import torch
    import torchvision.models as models
    from PIL import Image
    import numpy as np
    image = Image.open("build/airliner.jpg") #图片发在了build文件夹下
    image = image.resize((224, 224),Image.ANTIALIAS)
    image = np.asarray(image)
    image = image / 255
    image = torch.Tensor(image).unsqueeze_(dim=0)
    image = image.permute((0, 3, 1, 2)).float()
    
    model = models.resnet50(pretrained=True)
    model = model.eval()
    resnet = torch.jit.trace(model, torch.rand(1,3,224,224))
    # output=resnet(torch.ones(1,3,224,224))
    output = resnet(image)
    max_index = torch.max(output, 1)[1].item()
    print(max_index) # ImageNet1000类的类别序号
    resnet.save('resnet.pt')
    

    注意这里使用的是jit中的trace跟踪模型的方式,毫无疑问最后的输入的能够得到飞机的类别,ImageNet1000类的序号类别可以参考此处
    通过该代码能够在根目录下产生一个resnet.pt的文件,这个文件就是接下来C++所需要调用的。

    C++调用训练好的模型

    在写C++调用模型的代码之前,先写好CMakeLists文件:

    cmake_minimum_required(VERSION 3.0 FATAL_ERROR)
    
    project(example_torch)
    set(CMAKE_PREFIX_PATH "XXX/libtorch") //注意这里填自己解压libtorch时的路径
    
    find_package(Torch REQUIRED)
    find_package(OpenCV 3.0 QUIET)
    if(NOT OpenCV_FOUND)
        find_package(OpenCV 2.4.3 QUIET)
        if(NOT OpenCV_FOUND)
            message(FATAL_ERROR "OpenCV > 2.4.3 not found.")
        endif()
    endif()
    add_executable(${PROJECT_NAME} "main.cpp")
    target_link_libraries(${PROJECT_NAME} ${TORCH_LIBRARIES} ${OpenCV_LIBS})
    set_property(TARGET ${PROJECT_NAME} PROPERTY CXX_STANDARD 11)
    

    其中要设置好CMAKE_PREFIX_PATH路径,这个路径就是我们解压libtorch的路径,不然无法链接到libtorch库,其中也设置了OpenCV的配置,具体OpenCV的安装这里介绍了。
    然后就是C++调用PyTorch模型的代码

    #include <torch/torch.h>
    #include <torch/script.h>
    #include <iostream>
    #include <vector>
    #include <opencv2/highgui.hpp>
    #include <opencv2/core/core.hpp>
    #include <opencv2/opencv.hpp>
    
    void TorchTest(){
        std::shared_ptr<torch::jit::script::Module> module = torch::jit::load("../resnet.pt");
        assert(module != nullptr);
        std::cout << "Load model successful!" << std::endl;
        std::vector<torch::jit::IValue> inputs;
        inputs.push_back(torch::zeros({1,3,224,224}));
        at::Tensor output = module->forward(inputs).toTensor();
        auto max_result = output.max(1, true);
        auto max_index = std::get<1>(max_result).item<float>();
        std::cout << max_index << std::endl;
    }
    
    void Classfier(cv::Mat &image){
        torch::Tensor img_tensor = torch::from_blob(image.data, {1, image.rows, image.cols, 3}, torch::kByte);
        img_tensor = img_tensor.permute({0, 3, 1, 2});
        img_tensor = img_tensor.toType(torch::kFloat);
        img_tensor = img_tensor.div(255);
        std::shared_ptr<torch::jit::script::Module> module = torch::jit::load("../Train/resnet.pt");
        torch::Tensor output = module->forward({img_tensor}).toTensor();
        auto max_result = output.max(1, true);
        auto max_index = std::get<1>(max_result).item<float>();
        std::cout << max_index << std::endl;
    
    }
    
    int main() {
    //    TorchTest();
        cv::Mat image = cv::imread("airliner.jpg");
        cv::resize(image,image, cv::Size(224,224));
        std::cout << image.rows <<" " << image.cols <<" " << image.channels() << std::endl;
        Classfier(image);
        return 0;
    }
    

    其中TorchTest函数只是做了简单的演示,而Classfier通过OpenCV读取图片,并通过libtorch的函数将Mat格式转换成Tensor(注意:这里转换了维度,因为OpenCV的维度是[H,W,C], 而PyTorch模型需要的是[C,H,W]),最后依然能够输出和Python代码一样的答案。
    这里比较重要的几个函数有:
    torch::from_blob():这个函数将Mat类型转换成Tensor类型。
    torch::jit::load():该函数顾名思义就是加载模型的函数。
    module->forward():模型前向传播的函数,输入值建议使用vector类型
    max(): 这个函数是libtorch中的max,返回c++中的tuple类型(第一个值为维度上最大值,第二个值为最大值的序号)所以使用std::get<1>(max_result)来取出序号,这是tuple类型取出方式。

    展开全文
  • 勒索 待办事项:添加说明 安装 如果,包装可以通过添加安装extorch你在依赖列表mix.exs : def deps do [ { :extorch , " ~> 0.1.0 " } ] end 可以使用生成文档并在发布。 发布后,可以在上找到这些文档。
  • win10 64bit+ qt5.12.0 + msvc2017 + libtorch(pytorch)+cuda10.1+cudnn7.6配置 ...各个工具的安装不再详述,需要说明下pytorch下载https://pytorch.org/里的libtorch-win-shared-with-deps-debug-1.4.0.zip ...
  • 前言填一个之前的坑啊,本篇的姊妹篇——利用Pytorch的C++前端(libtorch)读取预训练权重并进行预测这篇文章中已经说明了如何在Ubuntu系统中使用libtorch做预测,当初也有朋友问我如何在Windows之下尝试使用libtorch...
  • 坑太多了,踩了很久,给出最佳... PyTorch1.0 源码编译 LibTorch 官网下载 OpenCV 4.0.0 源码编译 步骤:  确认CUDA9.0是否安装  安装anaconda,确认which python3.6在anaconda目录下  ...
  • 最近想用 Qt 写一个界面在 C++ 下调用 Pytorch 模型,整个环境配置下来遇到了不少问题,因此记录一下。 1. 下载安装相关文件 由于我的开发环境是 Win10,因此需要下载的东西挺多的,IDE 用的 Visual Studio 2019,在...
  • LibTorch安装、配置与使用LibTorch安装LibTorch的下载与环境变量的设置(1)解压压缩包(2)设置环境变量:VS2019的配置(1)设置配置管理器:(2)设置头文件路径:(3)设置链接库:测试代码 LibTorch安装 ...
  • libtorch安装和测试

    2020-05-06 11:48:38
    libtorch安装和测试 说明 Libtorch是pytorch开发C++的API接口,可以实现pytorch训练的模型在...Pytorch安装版本GPU1.0; CUDA安装版本10.0; 下载Libtorch版本: < libtorch-win-shared-with-deps-1.5.0...
  • 一般,打开网页搜索libtorch主要都是用原方法安装git的时候出现了报错,才来这里搜索安装教程的。这里就不得不吐槽一下git,多种原因,可能导致失败的情况发生,其中一个可能git是外网,有可能被强了。这就需要你,...
  • windows 也就是基于libtorch库,一个基于深度学习的C++库 1.按照以下操作将已经训练好的模型转换成pt格式保存 ...(注意事项:安装libtorch的版本最好跟安装Pytorch版本一致;) 比如,我本机上的Pytorch的版
  • 文章目录1、安装cuda10.12、安装cudnn 10.13、安装pytorch3.1 libtorch3.2 pytorch 1、安装cuda10.1 从这里下载cuda10.1的toolkits cuda 10.1下载链接 按下图选择 安装步骤就按照Base Installer中的四句指令来安装...
  • Pytorch快速安装过程

    万次阅读 2019-07-30 10:41:24
    Pytorch安装过程第一步:卸载pytorch第二步:安装最新版pytorch 第一步:卸载pytorch 按顺序执行: conda uninstall pytorch conda uninstall libtorch pip uninstall torch 第二步:安装最新版pytorch 执行...
  • 因为我一直都是在pytorch上面训练模型,...方案二:libtorch(c++版本的pytorch);pytorch为了弥补部署方面的劣势,,libtorch也在不断推陈出新,以不断打压tf等一众老炮生存空间方案三:NVIDIA出品的tensorRT;这...
  • pytorch官网上下载libtorch各个版本的url

    千次阅读 热门讨论 2020-04-28 10:24:31
    下载各种版本libtorch(x86架构官网直接下载,arm架构需要源码编译安装) 下载libtorch1.0(1.0.0和1.0.1)版本(cuda8.0、cuda9.0和cuda10.0 ) Linux version: cpu版本(Mac仅有cpu版本,和linux的cpu版本链接一样)...
  • Win10+VS2017+PyTorch(libtorch) C++ 基本应用

    万次阅读 多人点赞 2019-06-15 00:27:32
    0.下载准备 下载安装VS2017或VS2015 下载安装opencv 可以参考博客:VS2017配置opencv教程 ,该博客中写的很详细 ...下载地址:PyTorch libtorch ,这个根据自己情况选择下载,因为我自己的是cuda10,并且我选择...
  • 在Windows上安装(不支持OSX) 下载LibTorch 从下载,1.4(稳定),Windows,LibTorch,C ++ / Java,CUDA 10.1 TouchDesigner Hack:/ 我已经测试了TouchDesigner 2020.22080。 从下载LibTorch的位置,转到...
  • Pytorch模型部署 - Libtorch(crnn模型部署)

    千次阅读 热门讨论 2020-03-21 15:42:32
    Pytorch模型部署 - Libtorch 简介 libtorch是facebook提供的一套C++推理接口库,便于工业级别部署和性能优化。 安装: libtoch+opencv联合编译,这里采用libtorch-1.4(cpu)+opencv4.1. 可能出现的问题 ibtoch,...
  • 默认已经安装pytorch1.0以上版本,如果没有安装,可以使用如下命令进行安装(CPU版本,若想安装GPU CUDA版本,可以去官网https://pytorch.org/get-started/locally/选择): conda install pytorch torchvision ...
  • 安装pytorch出错

    2018-03-09 09:34:00
    师兄在安装pytorch的时候出错了,后来发现是之前的版本没有卸载干净 需要先conda uninstall torch conda uninstall libtorch 如果用pip安装的需要 pip uninstall torch pip uninstall libtorch 师兄当时没有...
  • 目录1、准备工作(1)下载准备(2)TorchScript(.pt文件)准备2、配置步骤(1)CMake配置(2)手动在VS配置 ...下载Libtorch 下载地址:https://pytorch.org/,根据自己的系统情况来选择下载版本。 注意: (1)有debu
  • 安装libtorch记录

    2020-11-06 18:01:31
    安装libtorch记录 环境 win10 + vs2017 + pytorch1.6.0 + cmake3.12.1 + opencv3.4.5 + cuda10.2 import torch as t print(t.version.cuda) print(t.__version__) 10.2 1.6.0 步骤 下载对应版本的libtorch ...
  • wget https://download.pytorch.org/libtorch/cpu/libtorch-cxx11-abi-shared-with-deps-1.5.1%2Bcpu.zip 2. 解压资源 博主手动解压 3. libtorch内容 CPU版本与GPU版本所包含的文件目录一致,其中include...
  • 在Ubuntu下安装LibTorch

    2020-12-30 17:51:17
    安装步骤(虽然说安装,其实就是下载LibTorch包而已): 1. 下载LibTorch 参考:利用Pytorch的C++前端(libtorch)读取预训练权重并进行预测 - Oldpan的个人博客 里面提到: 截自OLDPAN的博文 为了进行快速尝试...
  • Libtorch + vs 2019安装及配置

    千次阅读 热门讨论 2020-06-01 21:24:36
    Libtorch是c++接口的Pytorch...目前可以下载到Libtorch1.5版本,如果电脑支持Gpu,且安装了Cuda,可以下载Gpu版本,否则下载cpu版本。 下载解压之后如下 2、在VS2019中的配置 需要配置.头文件h 库文件,lib, 和d

空空如也

空空如也

1 2 3 4 5
收藏数 93
精华内容 37
关键字:

libtorchpytorch安装