LibTorch入坑记--续2

一、安装faiss

我的faiss,用的是曾经安装过的

pip install faiss-gpu==1.7

当时搞得环境名称是pni

二、配置环境

三、例子代码

#include <faiss/IndexFlat.h>
#include <faiss/Index.h>
#include <faiss/VectorTransform.h>
#include <faiss/impl/AuxIndexStructures.h>int main()
{// 定义特征向量的维度int d = 6;// 使用FlatL2距离度量创建索引faiss::IndexFlatL2 index(d);// 向索引中添加一些向量std::vector<float> vecs = {1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f,7.0f, 8.0f, 9.0f, 10.0f, 11.0f, 12.0f// 可以添加更多的向量...};// 添加向量到索引index.add(vecs.size() / d, vecs.data());// 定义查询向量std::vector<float> query = {1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f};// 搜索参数int k = 4; // 希望返回的最近邻个数std::vector<float> distances(k); // 存储与最近邻的距离std::vector<faiss::idx_t> ids(k); // 使用faiss::idx_t存储最近邻的ID// 执行搜索index.search(1, query.data(), k, distances.data(), ids.data());// 输出搜索结果std::cout << "Search results for the query vector:" << std::endl;for (int i = 0; i < k; ++i) {std::cout << "ID: " << ids[i] << ", Distance: " << distances[i] << std::endl;}return 0;
}

四、带GPU的例子代码


#include <iostream>
#include <vector>
#include "faiss/IndexFlat.h"
#include "faiss/MetaIndexes.h"#include <faiss/Index.h>
#include <faiss/VectorTransform.h>
#include <faiss/impl/AuxIndexStructures.h>#include <faiss/IndexIVFFlat.h>
#include <faiss/IndexPQ.h>
#include <faiss/index_factory.h>#include <faiss/gpu/GpuCloner.h>
#include <faiss/gpu/GpuIndexFlat.h>
#include <faiss/gpu/GpuResources.h>
#include <faiss/gpu/GpuCloner.h>
#include <faiss/gpu/GpuAutoTune.h>
#include <faiss/gpu/StandardGpuResources.h>int main()
{// 定义维度和数据集大小size_t d = 64;  // 特征维度size_t nb = 100000;  // 数据集大小size_t nq = 10;  // 查询数量// 随机生成一些数据和查询向量std::vector<float> database(d * nb);std::vector<float> queries(d * nq);// ... 填充 database 和 queries ...// 初始化GPU资源faiss::gpu::StandardGpuResources res;// 创建一个使用L2距离的Flat索引,并将其克隆到GPU上faiss::IndexFlatL2 index(d);faiss::Index* gpu_index = faiss::gpu::index_cpu_to_gpu(&res, 0, &index);// 将数据加入索引gpu_index->add(database.size() / d, database.data());// 搜索查询向量std::vector<faiss::idx_t> ids(10); // 使用faiss::idx_t存储最近邻的IDstd::vector<float> distances(nq * 10);  // 存储最近邻的距离gpu_index->search(nq, queries.data(), 10, distances.data(), ids.data());// 打印搜索结果for (int i = 0; i < nq; ++i) {std::cout << "Query " << i << " results:" << std::endl;for (int j = 0; j < 10; ++j) {std::cout << "ID: " << ids[i * 10 + j] << ", Distance: " << distances[i * 10 + j] << std::endl;}}// 释放资源delete gpu_index;return 0;
}

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

K8S快速入门

K8S快速入门 在学习k8s的过程&#xff0c;虽然官网给出的示例教程很简单&#xff0c;但是由于网络和环境的差异&#xff0c;导致实际操作的时候踩了很多坑&#xff0c;下面记录一下自己的操作步骤&#xff0c;方便需要的人参考&#xff0c;也方便以后的自己。 参考官网的资料…

华为eNSP中型企业局域网网络规划设计(下)

→b站传送门&#xff0c;感谢大佬← →华为eNSP中型企业局域网网络规划设计&#xff08;上&#xff09;← →拓扑图传送门&#xff0c;可以自己配置着玩← 配置ospf AR3 [AR3]ospf 1 router-id 3.3.3.3 //出口默认路由 [AR3-ospf-1]default-route-advertise always #area…

W801学习笔记二十二:英语背单词学习应用——下

续上篇&#xff1a; W801学习笔记二十一&#xff1a;英语背单词学习应用——上 五、处理用户交互 由于英语也是采用了和唐诗一样的《三分钟限时挑战》《五十题竞速挑战》《零错误闯关挑战》&#xff0c;所以用户交互的逻辑和唐诗是一样的。所以&#xff0c;我们抽一个基类&a…

Day 63:单调栈 LeedCode 84.柱状图中最大的矩形

84. 柱状图中最大的矩形 给定 n 个非负整数&#xff0c;用来表示柱状图中各个柱子的高度。每个柱子彼此相邻&#xff0c;且宽度为 1 。 求在该柱状图中&#xff0c;能够勾勒出来的矩形的最大面积。 示例 1: 输入&#xff1a;heights [2,1,5,6,2,3] 输出&#xff1a;10 解释&a…

CMakeLists.txt语法规则:foreach 循环基本用法

一. 简介 cmake 中除了 if 条件判断之外&#xff0c;还支持循环语句&#xff0c;包括 foreach()循环、while()循环。 本文学习 CMakeLists.txt语法中的循环语句。 CMakeLists.txt语法中 有两种 循环实现方式&#xff1a;foreach循环与 while循环。 二. CMakeLists.txt语法规则…

黑马点评项目总结

登录 基于session登录 短信验证码登录 配置登录拦截器 向 Spring MVC 框架中添加拦截器&#xff0c;LoginInterceptor 是一个自定义的拦截器&#xff0c;用于拦截用户的登录请求。 excludePathPatterns这一句是设置拦截器需要放行的请求路径列表。 "/user/code", …

图片编辑工具-Gimp

一、前言 GIMP&#xff08;GNU Image Manipulation Program&#xff09;是一款免费开源的图像编辑软件&#xff0c;具有功能强大和跨平台的特性。 GIMP作为一个图像编辑器&#xff0c;它提供了广泛的图像处理功能&#xff0c;包括但不限于照片修饰、图像合成以及创建艺术作品…

渗透测试流程

一、攻击流程 信息收集阶段→漏洞分析阶段→攻击阶段→后渗透阶段 二、信息收集 1、收集内容&#xff1a; IP资源&#xff1a;真实IP获取、旁站信息收集、C段主机信息收集域名发现&#xff1a;子域名信息收集、子域名枚举发现子域名、搜索引擎发现子域名、第三方聚合服务器发…

实战Java虚拟机-基础篇

一、基础篇-Java内存区域 1.运行时数据区 运行时数据区-总览 Java虚拟机在运行Java程序过程中管理的内存区域&#xff0c;称之为运行时数据区。 《Java虚拟机规范》中规定了每一部分的作用。 1.程序计数器 程序计数器&#xff08;Program Counter Register&#xff09;也叫…

【嵌入式必读】一文彻底理解PID自整定及PID自整定代码设计

文章目录 1. 前言2. PID简介3. 常用的PID自整定方法3.1 临界度比例法3.2 衰减曲线法 4. 继电反馈整定法原理4.1 继电反馈自整定的基本思想4.2 继电反馈自整定原理 5. 算法设计5.1 振荡的生成5.2 提取出临界周期 T c T_c Tc​和振荡波形幅值 A A A5.3 计算出PID参数 6 原代码6.1…

浅谈操作系统中的重要概念——线程(3)——设计模式

文章目录 一、什么是设计模式&#xff1f;二、单例模式2.1、饿汉模式2.2、懒汉模式2.3、多线程情况下调用 饿汉模式与懒汉模式 谁是安全的&#xff1f;&#xff1f;&#xff08;重点&#xff09; 三、工厂模式 一、什么是设计模式&#xff1f; 设计模式就相当于菜谱&#xff0…

【idea-sprongboot项目】SSH连接云服务器进行远程开发

继上一篇博客【阿里云服务器】ubuntu 22.04.1安装docker以及部署java环境-CSDN博客 目录 五、远程开发方式 1&#xff09;SSH进行远程开发 步骤 配置文件同步 window电脑远程操控 正式通过window电脑远程操控 运行在linux服务器上的远程程序 调试在linux服务器上的远程程…