一文详解MacOS+CLion——构建libtorch机器学习开发环境

头图
对于希望在本地环境中进行深度学习开发的开发者来说,配置合适的工具链是至关重要的一步。本文旨在帮助您在 macOS 操作系统上,利用 CLion IDE 和 PyTorch 的 C++依赖库——libtorch,快速搭建起一个高效的开发环境。这里我们将一步步地讲解如何下载必要的库、设置集成开发环境(IDE),以及编写和运行简单的代码示例来验证配置是否成功。

一、下载libtorch

首先,请访问 PyTorch官方网站,根据您的 Mac 系统参数选择并下载适合的PyTorch 依赖包。在页面最下方,您可以找到下载链接。对于本文,我选择了适用于 macOS 的默认版本 libtorch

PyTorch官方下载地址:
https://pytorch.org/get-started/locally/

PyTorch官方下载依赖库

下载完成后,请解压libtorch依赖库到一个易于管理的位置:这里我解压到了Android SDK的同级存储目录,朋友们可以根据自己喜好选择一个存储目录。

解压libtorch依赖库

最后,获取当前libtorch的路径,请注意保存改路径,这里我的存储路径为:/Users/xiaxueliang/Library/Android/libtorch

二、配置CLion项目

在成功下载并解压了 libtorch 库之后,下一步就是将它集成到我们的开发环境中。CLion 是由 JetBrains 开发的一款强大的 C++ 集成开发环境(IDE),它提供了智能代码补全、静态代码分析和便捷的调试工具等功能,非常适合用于构建复杂的 C++ 项目。本节介绍如何创建一个新的 CLion 项目,并正确配置它以使用 libtorch 库。我们将逐步讲解如何设置项目的构建系统,确保所有必要的库都能被正确链接,从而让您的项目可以顺利编译和运行。

2.1 创建CLion项目

启动 CLion 并创建一个新的 C++ 项目。您可以自由命名项目,这里我定义的名称为CLion_libtorch_demo

创建CLion_libtorch_demo项目

2.2 修改 CMakeLists.txt 文件

打开项目的 CMakeLists.txt 文件,可以以下配置信息:

打开项目对应的CMakeLists.txt文件

2.3 链接libtorch

CMakelists.txt文件,添加以下配置以正确链接 libtorch 库:

# 设置CMAKE_PREFIX_PATH环境变量:指向了libtorch安装目录,用于帮助CMake找到Torch库。  
set(CMAKE_PREFIX_PATH /Users/xiaxueliang/Library/Android/libtorch)  
# 查找Torch软件包,并且是REQUIRED:CMake会使用CMAKE_PREFIX_PATH查找TorchConfig.cmake或torch-config.cmake。  
find_package(Torch REQUIRED)  
# 向编译器添加头文件搜索路径:这里指定了libtorch根目录,使编译器能够在编译过程中找到libtorch的头文件。  
include_directories("/Users/xiaxueliang/Library/Android/libtorch")  
# 继续向编译器添加更多的头文件搜索路径:指向libtorch内部API部分。  
include_directories("/Users/xiaxueliang/Library/Android/libtorch/include/torch/csrc/api/include")  
# 指定链接哪些库:  
target_link_libraries(CLion_libtorch_demo "${TORCH_LIBRARIES}")

需要注意的是:

  1. /Users/xiaxueliang/Library/Android/libtorch是我们刚才解压的libtorch的路径。
  2. CLion_libtorch_demo是我们的项目名称。

CLion会自动重新加载链接相关配置:

链接libtorch

2.4 编写 C++ 源代码

接下来,在 main.cpp 文件中输入如下代码段,用以测试 libtorch 的基本功能:

#include <torch/torch.h>  
#include <iostream>  
#include <torch/csrc/autograd/variable.h>  
  
int main(int args, const char **arg) {  
    // 创建一个形状为{2, 10}的二维张量b,其元素是从标准正态分布(均值为0,方差为1)随机抽取的浮点数。  
    torch::Tensor b = torch::randn({2, 10});  
    // 创建一个形状为{2, 10}的二维张量a,其元素是介于20(包含)和40(不包含)之间的随机整数。  
    torch::Tensor a = torch::randint(20, 40, {2, 10});  
    // 将张量b与张量a相加,并将结果输出到控制台。  
    std::cout << b + a << std::endl;  
    return 0;  
}

添加上述代码后,可通过 File—>Reload CMake Project 重新Reload项目,以消除依赖报红的问题:

Reload CMake Project消除代码报红

2.5 运行

完成上述步骤后,点击运行按钮即可编译并执行程序。如果一切顺利,您应该能在控制台上看到两个随机生成张量相加的结果。

运行结果

通过以上步骤,您现在已经在 macOS 上成功地配置了一个基于 CLion 和 libtorch 的开发环境。希望这篇文章能够帮助您顺利开始深度学习之旅。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/944135.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

pg数据库postgis扩展相关技术简介

postgis-note pg数据库postgis扩展相关技术简介 简介 PostGIS是在对象关系型数据库PostgreSQL上增加了存储管理空间数据的能力的开源GIS数据库。依托于PostgreSQL的两个重要特性&#xff1a;Geometry对象、Gist索引。 webgis技术路线 Geometry对象 Geometry&#xff08;几…

Html——10 关键字和描述

<!DOCTYPE html> <html><head><meta charset"UTF-8"><title>淘宝网</title><meta name"keywords" content"我要自学网,自学HTML,自学CSS"/><meta name"description" content"要设置…

【原创学习笔记】近期项目中使用的西门子V20变频器总结(上篇)

现场V20 22kW变频器如图所示 进线分别为L1,L2,L3,PE线&#xff0c;出现分别为U,V,W接电机 在西门子官网查询手册后&#xff0c;查询可知可以通过多种方式控制变频器&#xff0c;比如&#xff1a;面板&#xff08;BOP&#xff09;控制&#xff0c;端子&#xff08;NPN/PNP&…

Exchange ProxyShell 攻击链利用详解

目录 ProxyShell CVE-2021-34473 SSRF ProxyShell 详细复现 ProxyShell 一键利用脚本 攻击者利用 ProxyShell 漏洞可绕过相关权限验证,进而配合其他漏洞可执行任意代码,控制Microsoft Exchange Server。 ProxyShell攻击链利用使用了以下漏洞: CVE-2021-34473 一个 SSR…

算法练习——模拟题

前言&#xff1a;模拟题的特点在于没有什么固定的技巧&#xff0c;完全考验自己的代码能力&#xff0c;因此有助于提升自己的代码水平。如果说一定有什么技巧的话&#xff0c;那就是有的模拟题能够通过找规律来简化算法。 一&#xff1a;替换所有问号 题目要求&#xff1a; 解…

ES 磁盘使用率检查及处理方法

文章目录 1. 检查原因2. 检查方法3. 处理方法3.1 清理数据3.2 再次检查磁盘使用率 1. 检查原因 磁盘使用率在 85%以下&#xff0c;ES 可正常运行&#xff0c;达到 85%及以上会影响 PEIM 数据存储。 在 ES 磁盘分配分片控制策略中&#xff0c;为了保护数据节点的安全&#xff0…

leetcode 面试经典 150 题:螺旋矩阵

链接螺旋矩阵题序号54题型二维数组&#xff08;矩阵&#xff09;解题方法模拟路径法难度中等熟练度✅✅✅ 题目 给你一个 m 行 n 列的矩阵 matrix &#xff0c;请按照 顺时针螺旋顺序 &#xff0c;返回矩阵中的所有元素。 示例 1&#xff1a; 输入&#xff1a;matrix [[1,2,3…

汽车CAN通信逻辑与LabVIEW开发

CAN通信的核心概念 CAN&#xff08;Controller Area Network&#xff09;是一种多主通信协议&#xff0c;广泛应用于汽车电子系统中&#xff0c;用于控制单元之间的高效通信。 ​ 消息优先级&#xff1a;每个CAN帧包含唯一的标识符&#xff08;ID&#xff09;&#xff0c;ID的…

CI/CD是什么?

CI/CD 定义 CI/CD 代表持续集成和持续部署&#xff08;或持续交付&#xff09;。它是一套实践和工具&#xff0c;旨在通过自动化构建、测试和部署来改进软件开发流程&#xff0c;使您能够更快、更可靠地交付代码更改。 持续集成 (CI)&#xff1a;在共享存储库中自动构建、测试…

Kubernetes之NodeSelector与NodeName实战

目录 目标 版本 官网 概述 实战 NodeName实战 NodeSelector实战 目标 通过配置NodeSelector与NodeName实现Pod运行&#xff08;或优先运行&#xff09;在我们期望的节点之上。了解这两种实现方法的区别。 版本 Kubernets v1.25.0 官网 将Pod分配给节点https://kubernet…

如何构建有效的AI Agents:从复杂到简约——深度解读Claude实践总结《Building effective agents》(上)

在人工智能技术日新月异的今天&#xff0c;大语言模型(LLM)已经成为技术创新的热点。 然而&#xff0c;在追逐技术前沿的热潮中&#xff0c;我们是否忽视了工程设计的本质&#xff1f; 作为全球人工智能领域的领军企业之一&#xff0c;Anthropic以其在AI安全和伦理方面的深入…

高中数学刷题版:函数奇偶性[干货]

文章目录 一、奇偶性定义例题 二、运算性质1、两个函数的和差积商2、复合函数3、画草图4、对称中心与对称轴 三、奇偶性判断例题 四、根据奇偶性求解析式例题 五、单调性与奇偶性的综合应用例题 一、奇偶性定义 1、定义域都是关于原点对称。 2、解析式关系 奇函数&#xff1a;…

【Sentinel】流控效果与热点参数限流

目录 1.流控效果 1.1.warm up 2.2.排队等待 1.3.总结 2.热点参数限流 2.1.全局参数限流 2.2.热点参数限流 2.3.案例 1.流控效果 在流控的高级选项中&#xff0c;还有一个流控效果选项&#xff1a; 流控效果是指请求达到流控阈值时应该采取的措施&#xff0c;包括三种&…

【Rust自学】7.4. use关键字 Pt.2 :重导入与换国内镜像源教程

喜欢的话别忘了点赞、收藏加关注哦&#xff0c;对接下来的教程有兴趣的可以关注专栏。谢谢喵&#xff01;(&#xff65;ω&#xff65;) 7.4.1. 使用pub use重新导入名称 使用use将路径导入作用域内后。该名称在词作用域内是私有的。 以上一篇文章的代码为例&#xff1a; m…

集装箱的纸箱和塑料箱识别数据集,使用YOLO,COCO JSON,PASICAL VOC XML格式标注,识别准确率高达97.5%

集装箱的纸箱和塑料箱识别数据集&#xff0c;使用YOLO&#xff0c;COCO JSON&#xff0c;PASICAL VOC XML格式标注&#xff0c;识别准确率高达97.5% 数据集分割 训练组88&#xff05; 4605图片 有效集8% 438图片 测试集4% 219图片 预处理 自动定向&#x…

TOP K问题:利用堆排序找出数组中最小的k个数

设计一个算法&#xff0c;找出数组中最小的k个数。以任意顺序返回这k个数均可。 找小的数需要建大堆来解决&#xff0c;首先将数组中前K个数建成一个大堆&#xff0c;将从k1个数直到数组结束的所有数与堆顶的数进行比较&#xff0c;如果比堆顶的数小&#xff0c;则替换堆顶的数…

VDA 学习手册

VDA&#xff08;Verband der Automobilindustrie&#xff0c;德国汽车工业联合会&#xff09;报文标准是专为汽车行业制定的电子数据交换&#xff08;EDI&#xff09;标准&#xff0c;用于支持供应链管理中的数据传输。它是由德国汽车工业联合会开发和维护的&#xff0c;广泛应…

自动化测试- 自动化测试模型

目录 自动化测试模型简介 1、线性模型 举例 测试页面html文件 测试脚本 2. 关键字驱动测试&#xff08;Keyword-Driven Testing&#xff09; 需测试内容 关键字驱动测试框架 创建测试用例文件 运行测试 3. 数据驱动测试&#xff08;Data-Driven Testing&#xff09; …

【Halcon】例程讲解:基于形状匹配与OCR的多图像处理(附图像、程序下载链接)

1. 开发需求 在参考图像中定义感兴趣区域&#xff08;ROI&#xff09;&#xff0c;用于形状匹配和文本识别。通过形状匹配找到图像中的目标对象位置。对齐多幅输入图像&#xff0c;使其与参考图像保持一致。在对齐后的图像上进行OCR识别&#xff0c;提取文本和数字信息。以循环…

快速理解24种设计模式

简单工厂模式 建立产品接口类&#xff0c;规定好要实现方法。 建立工厂类&#xff0c;根据传入的参数&#xff0c;实例化所需的类&#xff0c;实例化的类必须实现指定的产品类接口 创建型 单例模式Singleton 保证一个类只有一个实例&#xff0c;并提供一个访问他它的全局…