当前位置: 首页 > news >正文

ubuntu配置libtorch CPU版本

  • 配置环境:Ubuntu 20.04
  • Date:2024 / 08

1、下载最新版本的libtorch

wget https://download.pytorch.org/libtorch/nightly/cpu/libtorch-shared-with-deps-latest.zip
unzip libtorch-shared-with-deps-latest.zip

2、创建一个C++工程文件夹,目录结构如下:

example-app/CMakeLists.txtexample-app.cpp

其中,CMakeLists.txt文件如下:

cmake_minimum_required(VERSION 3.18 FATAL_ERROR)
project(example-app)# set(CMAKE_PREFIX_PATH "/path/to/libtorch;/another/path") #设置多个路径
set(CMAKE_PREFIX_PATH "/path/to/libtorch")find_package(Torch REQUIRED)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${TORCH_CXX_FLAGS}")add_executable(example-app example-app.cpp)
target_link_libraries(example-app "${TORCH_LIBRARIES}")
set_property(TARGET example-app PROPERTY CXX_STANDARD 17)# The following code block is suggested to be used on Windows.
# According to https://github.com/pytorch/pytorch/issues/25457,
# the DLLs need to be copied to avoid memory errors.
if (MSVC)file(GLOB TORCH_DLLS "${TORCH_INSTALL_PREFIX}/lib/*.dll")add_custom_command(TARGET example-appPOST_BUILDCOMMAND ${CMAKE_COMMAND} -E copy_if_different${TORCH_DLLS}$<TARGET_FILE_DIR:example-app>)
endif (MSVC)

example-app.cpp文件如下:

#include <torch/torch.h>
#include <iostream>int main() {torch::Tensor tensor = torch::rand({2, 3});std::cout << tensor << std::endl;
}

3、编译
在example-app文件夹下打开终端

mkdir build
cd build
cmake -DCMAKE_PREFIX_PATH=/absolute/path/to/libtorch .. #这个路径可以直接在cmakelist中定义
cmake --build . --config Release

4、运行测试

./example-app

可以打印出数组证明安装成功

5、加载.pt文件cpp使用示例:

#include <iostream>
#include <cmath>#include <torch/torch.h>      // Libtorch头文件
#include <torch/script.h>     // 需要加载PyTorch脚本模型// libtorch模型加载和推理函数
torch::Tensor load_model_and_predict(torch::Tensor input_tensor) {// 加载已保存的PyTorch脚本模型(torch::jit::script::Module)torch::jit::script::Module module;try {module = torch::jit::load("/path/to/policy.pt");  // 模型路径}catch (const c10::Error& e) {std::cerr << "Error loading the model\n";return torch::Tensor();  // 返回一个空的张量,表示加载失败}// 模型推理std::vector<torch::jit::IValue> inputs;inputs.push_back(input_tensor);at::Tensor output = module.forward(inputs).toTensor();return output;
}int main(int argc, char** argv) {// 构造输入张量进行模型推理(假设输入为1维张量,大小为48*15)torch::Tensor input_tensor = torch::rand({1, 48*15});//根据自己打模型输入设置torch::Tensor prediction = load_model_and_predict(input_tensor);std::cout << "Model prediction: " << prediction << std::endl;//std::cout << "input_tensor: " << input_tensor << std::endl;return 0;
}

参考:

https://pytorch.org/cppdocs/installing.html

相关文章:

ubuntu配置libtorch CPU版本

配置环境&#xff1a;Ubuntu 20.04Date&#xff1a;2024 / 08 1、下载最新版本的libtorch wget https://download.pytorch.org/libtorch/nightly/cpu/libtorch-shared-with-deps-latest.zip unzip libtorch-shared-with-deps-latest.zip2、创建一个C工程文件夹&#xff0c;目…...

Docker MySql 数据备份、恢复

docker-compose.yaml实例 version: 3.8 services:db:image: mysql:9.0.1environment:MYSQL_ROOT_PASSWORD: 123456MYSQL_DATABASE: dataMYSQL_USER: dataMYSQL_PASSWORD: 123456MYSQL_ROOT_HOST: % 1、备份 docker exec -it <容器名称> /usr/bin/mysqldump -u root -p12…...

django项目添加测试数据的三种方式

文章目录 自定义终端命令Faker添加模拟数据基于终端脚本来完成数据的添加编写python脚本编写shell脚本执行脚本需要权限使用shell命令来完成测试数据的添加 添加测试数据在工作中一共有三种方式&#xff1a; 可以根据django的manage.py指令进行[自定义终端命令]可以采用第三方…...

用Python提取PDF表格到Excel文件

在对PDF中的表格进行再利用时&#xff0c;除了直接将PDF文档转换为Excel文件&#xff0c;我们还可以提取PDF文档中的表格数据并写入Excel工作表。这样做可以避免一些不必要的文本和格式带来的干扰&#xff0c;获得更易于分析和处理的表格数据&#xff0c;并方便进行更多的格式设…...

Java基础|多线程:多线程分页拉取

前言&#xff1a; 通常我们都会遇到分页拉取的需求&#xff0c;比如与第三方系统同步数据&#xff0c;定时拉取全量数据做缓存&#xff0c;下面我们简单介绍下多线程分页写法 需求&#xff1a; 全量同步第三方系统数据&#xff0c;并在全部数据同步完后&#xff0c;统一做缓存…...

Android RecyclerView 实现 GridView ,并实现点击效果及方向位置的显示

效果图 一、引入 implementation com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.30 二、使用步骤 1.Adapter public class UnAdapter extends BaseQuickAdapter<UnBean.ResultBean, BaseViewHolder> {private int selectedPosition RecyclerView.NO_POSITIO…...

Centos中dnf和yum区别对比

dnf和yum是两种不同的包管理工具&#xff0c;它们各自具有独特的特点和优势&#xff0c;主要用于在Linux系统上安装、更新和卸载软件包。以下是dnf和yum之间的主要区别&#xff1a; 1. 依赖关系解决 dnf&#xff1a;dnf在处理依赖关系方面表现出更强的能力。它能够更高效地解…...

CVPT: Cross-Attention help Visual Prompt Tuning adapt visual task

论文汇总 当前的问题 图1:在VTAB-1k基准测试上&#xff0c;使用预训练的ViT-B/16模型&#xff0c;VPT和我们的CVPT之间的性能和Flops比较。我们将提示的数量分别设置为1、10、20、50,100,150,200。 如图1所示&#xff0c;当给出大量提示时&#xff0c;VPT显示了性能的显著下降…...

基于双向 LSTM 和 CRF 的序列标注模型

基于双向 LSTM 和 CRF 的序列标注模型 在自然语言处理中,序列标注是一项重要的任务,例如命名实体识别、词性标注等。本文将介绍如何使用 Keras 构建一个基于双向 LSTM 和 CRF 的序列标注模型。 一、引言 序列标注任务要求为输入序列中的每个元素分配一个标签。传统的方法可…...

为何美国与加拿大边界看似那么随意?

我们在《日本移民巴西超200万&#xff0c;会成第二个“巴勒斯坦”吗&#xff1f;》一文中探讨了日本移民巴西的历史&#xff0c;以及移民对巴西的风险与挑战。 今天我们来探讨美国与加拿大边界为什么那么随意,并整理了加拿大和美国的国界、省界、市界行政边界数据分享给大家&a…...

什么是触发器(Trigger)?触发器何时会被触发?

在数据库管理系统中&#xff0c;触发器是一种特殊的存储过程&#xff0c;它会在特定的表上执行插入、更新或删除操作时自动触发。 触发器的主要用途是维护数据的一致性和完整性&#xff0c;以及实现一些复杂的业务逻辑。 触发器何时会被触发&#xff1f; 触发器可以在以下几…...

一步一步优化一套生成式语言模型系统

以下是这套生成式语言模型解决任务的流程图概述&#xff1a; #mermaid-svg-keXg8yGoCyObKDtu {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-keXg8yGoCyObKDtu .error-icon{fill:#552222;}#mermaid-svg-keXg8yGoCyO…...

Q必达任务脚本

文章目录 1.购买服务器地址2.部署教程3. 代码如下4. 如何联系我 1.购买服务器地址 服务器购买地址 https://t.aliyun.com/U/rUHk58 若失效&#xff0c;可用地址 https://www.aliyun.com/activity/wuying/dj?source5176.29345612&userCode49hts92d 2.部署教程 2024年最…...

问请问请问2312123213123

&#x1f4e2;博客主页&#xff1a;https://blog.csdn.net/2301_779549673 &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01; &#x1f4e2;本文由 JohnKi 原创&#xff0c;首发于 CSDN&#x1f649; &#x1f4e2;未来很长&#…...

Vue3:快速生成模板代码

目录 一.模板代码 1.提供基础结构 2.定义组件名称 3.初始化数据和方法 4.应用样式 5.提高开发效率 二.操作 1.点击右下角设置按钮选择代码片段 2.输入vue.json&#xff0c;打开vue.json文件 3.构造模板 4.模板代码 5.使用 6.效果 一.模板代码 Vue3快速生成模板代…...

文件上传-php

查找方式 ***(1) 黑盒 查找(upload) 扫描 (2) 应用型 窗口 上传中心或者后台中心 上传 Ps:后台是后台 权限是权限 (3) 会员中心 (4) 白盒 基本函数定义 写前端的 Enctype 上传类型Method 提交方式Onsubmit 鼠标的时间Action"放在指定文件"Php 接受表单数据 isset(…...

C++设计模式(更新中)

文章目录 1、创建型模式1.1 简单工厂&#xff08;Simple Factory&#xff09;&#xff08;1&#xff09;示例&#xff08;2&#xff09;总结 1.2 工厂方法&#xff08;Factory Method&#xff09;&#xff08;1&#xff09;示例&#xff08;2&#xff09;总结 1.3 抽象工厂&…...

Kali crunsh字典工具

查看自带密码字典 vim /usr/share/wordlists 使用 crunch 字典工具 随机组成6位纯数字密码 crunch 6 6 0123456789 -o test1.txt 由 Abc1234 随机组成的 6~8 位密码 crunch 6 8 Abc1234 -o test2.txt 以A开头后面跟3位数字组成的4位密码 crunch 4 4 -t A%%% -o test3.txt...

Redis系列---Redission分布式锁

文章目录 类型原理使用看门狗与setNx比较 类型 使用Redission&#xff0c;lock的机制其实是使用了ttl&#xff0c;一直等ttl为0再get。无论是redission还是redis的setNx&#xff0c;只要是锁&#xff0c;都必须有加锁和释放锁两个动作&#xff0c;二者缺一不可&#xff0c;并且…...

算法打卡:第十一章 图论part05

今日收获&#xff1a;并查集理论基础&#xff0c;寻找存在的路径 1. 并查集理论基础&#xff08;from代码随想录&#xff09; &#xff08;1&#xff09;应用场景&#xff1a;判断两个元素是否在同一个集合中 &#xff08;2&#xff09;原理讲解&#xff1a;通过一个一维数组…...

《流浪的梦想家》的传播入口:漂泊感如何形成记忆点

从内容传播角度看&#xff0c;《流浪的梦想家》的入口在两个词的拉扯&#xff1a;流浪意味着还在路上&#xff0c;梦想家意味着心里仍有方向。这个反差足够形成记忆点。这首歌不适合被写成空泛远方。更准确的场景&#xff0c;是一个人背着行李、换城市、换工作、或者在深夜车窗…...

200万像素GC2145摄像头怎么玩?手把手教你用AiPi-Cam-D200开发板快速搭建无线图传

200万像素GC2145摄像头实战指南&#xff1a;零代码玩转AiPi-Cam-D200无线图传 当你拆开AiPi-Cam-D200开发板的包装&#xff0c;看到那块小巧的GC2145摄像头时&#xff0c;可能既兴奋又忐忑——这个看起来像玩具的设备&#xff0c;真能实现专业级的无线图传吗&#xff1f;作为创…...

QuickCut视频剪辑软件:3分钟快速上手免费视频处理神器

QuickCut视频剪辑软件&#xff1a;3分钟快速上手免费视频处理神器 【免费下载链接】QuickCut Your most handy video processing software 项目地址: https://gitcode.com/gh_mirrors/qu/QuickCut 还在为复杂的专业视频编辑软件头疼吗&#xff1f;QuickCut作为一款轻量级…...

LabVIEW PC端软件开发:架构设计、性能优化与工程化实践

1. 项目概述&#xff1a;为什么选择在PC上深耕LabVIEW开发&#xff1f;当大家谈论起LabVIEW&#xff0c;很多人的第一印象可能还停留在它与各种数据采集卡、PLC、嵌入式硬件绑定的场景里。作为一个在这个图形化编程环境里摸爬滚打了十多年的老工程师&#xff0c;我想说&#xf…...

基于STM32的物联网健康监测平台:硬件设计、驱动开发与系统整合

1. 项目概述&#xff1a;一个面向物联网健康监测的STM32开发平台最近在整理手头的项目资料&#xff0c;翻出来一块几年前自己设计并打样的STM32开发板。这块板子当初的定位很明确&#xff0c;就是做一个功能集成度高的“物联网健康监测终端”原型平台。它不是那种追求极致性能的…...

PostgreSQL 主从流复制完整部署指南:从零搭建到故障切换

文章目录每日一句正能量前言1.环境准备1.1 基础环境要求1.2 安装PostgreSQL2.1 修改PostgreSQL主配置文件2.2 修改客户端认证配置文件2.3 创建复制专用用户2.4 重启主库使配置生效2.5 备份主库数据&#xff08;供从库初始化&#xff09;3.从库配置3.1 停止从库PostgreSQL服务并…...

MKS Robin Nano Marlin 2.0固件架构解析与性能调优指南

MKS Robin Nano Marlin 2.0固件架构解析与性能调优指南 【免费下载链接】Mks-Robin-Nano-Marlin2.0-Firmware The firmware of Mks Robin Nano, based on Marlin-2.0.x, adding the color GUI. 项目地址: https://gitcode.com/gh_mirrors/mk/Mks-Robin-Nano-Marlin2.0-Firmwa…...

VCS仿真总失败?手把手教你用TMAX的CPV功能快速定位ATPG Pattern问题

VCS仿真总失败&#xff1f;TMAX的CPV功能实战指南&#xff1a;精准定位ATPG Pattern问题 在数字芯片验证的战场上&#xff0c;ATPG&#xff08;自动测试模式生成&#xff09;仿真是确保芯片可测试性的关键环节。但当VCS仿真器抛出"cycle mis-match"错误时&#xff0c…...

Solana Meme币合约开发:Pump.fun开源实现与绑定曲线机制解析

1. 项目概述与核心价值最近在Solana生态里&#xff0c;Pump.fun这个平台可以说是火得一塌糊涂。作为一个允许任何人快速创建和启动Meme币的“发射台”&#xff0c;它极大地降低了在Solana上发币的门槛&#xff0c;也催生了一波又一波的造富神话。如果你关注过这个领域&#xff…...

TortoiseGit重置与还原功能详解:除了‘后悔药’,还能当‘时光机’和‘后悔药解药’?

TortoiseGit重置与还原功能深度解析&#xff1a;从版本控制到历史重构的艺术 在代码开发的漫长旅途中&#xff0c;每个开发者都曾有过"如果当时..."的瞬间。与大多数版本控制系统不同&#xff0c;Git提供的不仅是一个简单的"撤销"按钮&#xff0c;而是一套…...