前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【AI模型】LibTorch深度学习框架配置与使用

【AI模型】LibTorch深度学习框架配置与使用

作者头像
DevFrank
发布2024-07-24 15:44:39
960
发布2024-07-24 15:44:39
举报
文章被收录于专栏:C++开发学习交流

😏1. LibTorch介绍

官网:https://pytorch.org/

LibTorch是PyTorch深度学习框架的C++版本,它提供了用于构建和训练神经网络模型的高级API和工具。LibTorch允许你在离线环境中使用PyTorch模型,而无需依赖Python解释器。

在这里插入图片描述
在这里插入图片描述

以下是LibTorch的一些主要特点和功能:

1.高性能:LibTorch被优化为高性能的C++库,可提供快速且高效的计算能力。它利用了底层的C++实现,可以在支持的硬件上获得最佳的计算性能。

2.深度学习支持:LibTorch支持各种深度学习任务,包括图像分类、目标检测、语义分割、机器翻译等。它提供了一系列的预训练模型和工具,方便你进行模型训练与推理。

3.跨平台支持:LibTorch可在多个操作系统上运行,包括Windows、Linux和macOS。这使得你可以在不同的设备上进行模型开发和部署,以满足特定的应用需求。

4.兼容性:由于LibTorch是基于PyTorch开发的,因此能够与PyTorch代码紧密集成。你可以轻松地在Python和C++之间切换,使用相同的模型、工具和API。

5.扩展性:LibTorch支持自定义C++扩展,你可以使用C++编写具有高效计算能力的自定义操作和模块。这使得你可以在深度学习框架中实现更多的自定义功能。

😊2. 环境安装与配置

以Ubuntu为例配置LibTorch:

代码语言:javascript
复制
# 安装Pytorch cpu版本
pip install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cpu
# 下载LibTorch
wget https://download.pytorch.org/libtorch/nightly/cpu/libtorch-shared-with-deps-latest.zip
unzip libtorch-shared-with-deps-latest.zip
# 配置环境(将PATH路径替换为自己的)
echo "export PATH=/path/to/libtorch:\$PATH" >> ~/.bashrc && source ~/.bashrc

CMakeList.txt构建示例:

代码语言:javascript
复制
cmake_minimum_required(VERSION 3.21)
project(HelloWorld)

# LibTorch需c++17支持
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++17")

find_package(Torch REQUIRED)
add_executable(HelloWorld HelloWorld.cpp)
target_link_libraries(HelloWorld $TORCH_LIBRARIES)
#target_link_libraries(HelloWorld ${TORCH_LIBRARIES}) # torchscript支持

构建编译示例:

代码语言:javascript
复制
mkdir build && cd build
cmake .. 
make
./HelloWorld(xxx)

😆3. 应用示例

有一个不错的LibTorch学习Github仓库推荐:https://github.com/clearhanhui/LearnLibTorch

Libtorch(c++)很多方面与Pytorch(python)用法基本一致,适合Pytorch的同学来转。

创建张量tensor示例:

代码语言:javascript
复制
#include <iostream>
#include <torch/torch.h>

int main() {
    // 创建一个(2,3)张量
    torch::Tensor tensor = torch::zeros({2, 3});
    std::cout << tensor << std::endl;
    std::cout << "Welcome to LibTorch" << std::endl;
    
    return 0;
}

TorchScript可对python定义的PyTorch模型进行序列化,并在c++中加载运行,示例:

代码语言:javascript
复制
#include <iostream>
#include <torch/script.h>
#include <torch/torch.h>
#include <vector>

int main() {
  // 模型路径
  std::string module_path = "../xxx.pt";

  // 加载模型
  torch::jit::script::Module module;
  try {
    module = torch::jit::load(module_path);
  } catch (const c10::Error &e) {
    std::cout << "error loading the model\n";
    return -1;
  }

  std::vector<torch::jit::IValue> x;
  x.push_back(torch::ones({1, 1, 28, 28}));

  at::Tensor output = module.forward(x).toTensor();
  std::cout << output.sum() << std::endl;

  return 0;
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-07-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 😏1. LibTorch介绍
  • 😊2. 环境安装与配置
  • 😆3. 应用示例
相关产品与服务
机器翻译
机器翻译(Tencent Machine Translation,TMT)结合了神经机器翻译和统计机器翻译的优点,从大规模双语语料库自动学习翻译知识,实现从源语言文本到目标语言文本的自动翻译,目前可支持十余种语言的互译。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档