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

郑州外贸网站建设哪家好常用的网络营销工具有哪些

郑州外贸网站建设哪家好,常用的网络营销工具有哪些,wordpress主题上传到哪里,想找个专业做网站公司目录 简介安装方法安装OpenBLAS安装lapack编译Faiss 代码示例余弦相似度计算输出ID号而非索引的改进版 简介 Faiss 是一个强大的向量相似度搜索库#xff0c;具有以下优点#xff1a; 高效的搜索性能#xff1a;Faiss 在处理大规模向量数据时表现出色。它利用了高度优化的索… 目录 简介安装方法安装OpenBLAS安装lapack编译Faiss 代码示例余弦相似度计算输出ID号而非索引的改进版 简介 Faiss 是一个强大的向量相似度搜索库具有以下优点 高效的搜索性能Faiss 在处理大规模向量数据时表现出色。它利用了高度优化的索引结构和近似搜索算法可以快速地执行最近邻搜索和相似度匹配具有很低的查询延迟。 高度可扩展Faiss 提供了多种索引结构和算法的选择包括 k-d树、IVFInverted File System和 PQProduct Quantization等。这些索引结构能够轻松应对大规模的向量数据集并支持高效的并行计算和分布式处理。 高精度的近似搜索Faiss 通过采用近似搜索技术在保证搜索速度的同时尽量接近精确搜索的结果。这使得 Faiss 在许多实际应用中能够有效地处理高维度的向量数据如图像、文本和推荐系统等。 多语言支持Faiss 提供了多种编程语言的接口如 Python、Java 和 Go 等使得它能够方便地集成到各种应用和平台中。 然而Faiss 也有一些局限性和缺点 内存消耗Faiss 在处理大规模向量数据时可能需要大量的内存。特别是在使用一些高级索引结构和算法时内存消耗可能会很高。 学习曲线陡峭对于初次接触 Faiss 的开发者来说学习曲线可能会比较陡峭。理解并配置 Faiss 的索引结构、算法和参数可能需要一定的时间和经验。 综上所述Faiss 是一个强大而高效的向量相似度搜索库适用于大规模的向量数据集和高维度的向量数据。它提供了高速的近似搜索和优化的索引结构有助于构建复杂的检索系统和应用。然而在使用 Faiss 时需要注意内存消耗和学习曲线的挑战。 安装方法 安装OpenBLAS OpenBLAS 是一个开源的数值线性代数库用于高性能科学计算和数据处理。它提供了基于多核处理器和向量指令集的并行化实现以加速矩阵运算和其他数值计算操作。 git clone https://github.com/xianyi/OpenBLAS.gitgfortran 是 GNU Compiler Collection简称 GCC的一部分它是 GNU 项目开发的免费开源的编译器套件。gfortran 是 GCC 提供的 Fortran 编译器用于编译和执行 Fortran 程序。 使用gfortran进行编译 sudo apt install gfortran cd OpenBLAS make FCgfortran make install ln -s /opt/OpenBLAS/lib/libopenblas.so /usr/lib/libopenblas.so LD_LIBRARY_PATH/opt/OpenBLAS/lib export LD_LIBRARY_PATH在这个特定的命令中FCgfortran将设置FC变量的值为gfortran指示构建过程使用gfortran作为Fortran编译器。 安装lapack LAPACKLinear Algebra Package是一个用于数值线性代数计算的库它提供了一系列高性能的算法和子程序用于解决线性方程组、特征值问题、奇异值分解和相关的数值计算任务。 wget http://www.netlib.org/lapack/lapack-3.4.2.tgz tar -zxf lapack-3.4.2.tgz cd lapack-3.4.2 cp ./INSTALL/make.inc.gfortran ./ mv make.inc.gfortran make.inc vi Makefile # 修改如下 [#lib: lapacklib tmglib lib: blaslib variants lapacklig tmglib] make cd lapacke make cp include/*.h /usr/include cd .. cp *.a /usr/lib编译Faiss git clone https://github.com/facebookresearch/faiss.git cd faiss #这个命令是使用 CMake 构建一个项目并将构建产物放置在名为 “build” 的目录中。 cmake -B build . -DFAISS_ENABLE_GPUOFF -DFAISS_ENABLE_PYTHONOFF #这个命令是使用 make 构建名为 “faiss” 的目标并且指定构建目录为 “build”。 make -C build -j faiss #这个命令是使用 make 进行构建并将构建产物安装到系统中。同样在build目录下构建 make -C build install代码示例 余弦相似度计算 给定一个向量在已有的两个向量中找到余弦相似度最优的一个向量 #include iostream #include cmath #include faiss/IndexFlat.h #include faiss/index_io.h #include faiss/utils/distances.h int main() {// 创建索引对象faiss::IndexFlatIP index(2); // 使用L2距离度量2维向量// 添加向量数据float xb[4] {1.0, 1.0, 0.0, 0.5}; // 2个2维向量//存储向量个数int n2;// 为了使用内积求出余弦相似度要对每个向量进行归一化操作size_t d 2; // 向量维度float norm[d]{0,0};// 计算向量的 L2 范数是已经过开方的// 函数有四个参数// x指向输入向量数组的指针所有向量在内存中是连续存储的。即向量数组的布局是 [x₀₀, x₀₁, ..., xₙ₋₁(d-1)]。// norms指向输出结果数组的指针用于存储计算出的 L2 范数。结果数组的布局和输入向量相同即 [norm₀, norm₁, ..., normₙ₋₁]。// d向量的维度即每个向量的元素数目。// n向量的数量或者说是向量数组的长度。faiss::fvec_norms_L2(norm, xb,d,n); // 将每个向量归一化为单位向量同时添加到索引中#pragma omp parallel{#pragma omp forfor (int i 0; i n; i) {// 每个向量的起始地址float* vector xb[i * d]; // 将向量归一化为单位向量for (size_t j 0; j d; j) {vector[j] / norm[i];}// 每次将1个向量添加到索引中#pragma omp critical{index.add(1, vector);}}//进行同步#pragma omp barrier}// 保存索引到文件faiss::write_index(index, index.faissindex);// 从文件加载索引faiss::Index* loaded_index faiss::read_index(index.faissindex);// 执行搜索float xq[2] {1.0, 0.0}; // 查询向量int k 1; // 返回最接近的2个邻居faiss::idx_t* I new faiss::idx_t[k]; // 邻居索引float* D new float[k]; // 邻居距离// search 方法的主要参数如下 // n表示要搜索的查询向量的数量即查询向量的个数。 // x一个指向浮点数的指针表示查询向量的数据。x 的大小应该为 n 乘以向量的维度。 // k表示要返回的相似邻居的数量。 // distances一个指向浮点数的指针用于存储查询向量与相似邻居之间的距离。distances 的大小应该为 n 乘以 k。 // labels一个指向整数的指针用于存储相似邻居的索引标签。labels 的大小应该为 n 乘以 k。loaded_index-search(1, xq, k, D, I);// 打印结果std::cout 查询结果: std::endl;std::cout 邻居索引: I[0] , 距离: D[0] std::endl;//返回原始向量// 获取索引为 i 的向量// 向量的维度std::vectorfloat vectors(index.d);index.reconstruct(I[0], vectors.data());// 使用循环遍历并打印该向量每个元素for (const auto element : vectors) {std::cout element ;}std::cout std::endl;// 释放内存delete loaded_index;delete[] I;delete[] D;return 0; }对应cmakelist: cmake_minimum_required(VERSION 3.5) project(fangdou) FIND_PACKAGE( OpenMP REQUIRED) if(OPENMP_FOUND) message(OPENMP FOUND) set(CMAKE_C_FLAGS ${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}) set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}) set(CMAKE_EXE_LINKER_FLAGS ${CMAKE_EXE_LINKER_FLAGS} ${OpenMP_EXE_LINKER_FLAGS}) endif()# 添加 Faiss 库的路径 set(FAISS_INCLUDE_DIR /usr/local/include/faiss) set(FAISS_LIBRARY_DIR /usr/local/lib)include_directories( ${FAISS_INCLUDE_DIR} )SET(OpenCV_DIR /usr/local/lib/cmake/opencv4/) FIND_PACKAGE(OpenCV REQUIRED)file(GLOB_RECURSE cpp_srcs ${CMAKE_SOURCE_DIR}/src/*.cpp ${CMAKE_SOURCE_DIR}/src/*.cc ${CMAKE_SOURCE_DIR}/src/*.h)link_directories( /usr/lib/x86_64-linux-gnu/ ${FAISS_LIBRARY_DIR} )add_executable(${PROJECT_NAME} ${cpp_srcs})target_link_libraries(${PROJECT_NAME} ${OpenCV_LIBS} faiss openblas)输出ID号而非索引的改进版 #include iostream #include cmath #include faiss/IndexFlat.h #include faiss/index_io.h #include faiss/utils/distances.h #include faiss/IndexIDMap.h int main() {// 创建一个IndexFlatIP内积索引对象作为内部索引faiss::IndexFlatIP inner_index(2);// 创建一个IndexIDMap对象将内部索引设置为IndexFlatIPfaiss::IndexIDMap index(inner_index);// 添加向量数据float xb[4] {1.0, 1.0, 0.0, 0.5}; // 2个2维向量//idsfaiss::idx_t ids[] {1001, 1002};//存储向量个数int n2;// 为了使用内积求出余弦相似度要对每个向量进行归一化操作size_t d 2; // 向量维度float norm[d]{0,0};// 计算向量的 L2 范数是已经过开方的// 函数有四个参数// x指向输入向量数组的指针所有向量在内存中是连续存储的。即向量数组的布局是 [x₀₀, x₀₁, ..., xₙ₋₁(d-1)]。// norms指向输出结果数组的指针用于存储计算出的 L2 范数。结果数组的布局和输入向量相同即 [norm₀, norm₁, ..., normₙ₋₁]。// d向量的维度即每个向量的元素数目。// n向量的数量或者说是向量数组的长度。faiss::fvec_norms_L2(norm, xb,d,n); // 将每个向量归一化为单位向量同时添加到索引中#pragma omp parallel{#pragma omp forfor (int i 0; i n; i) {// 每个向量的起始地址float* vector xb[i * d]; // 将向量归一化为单位向量for (size_t j 0; j d; j) {vector[j] / norm[i];}// 每次将1个向量添加到索引中#pragma omp critical{index.add_with_ids(1, vector,ids[i]);}}//进行同步#pragma omp barrier}// 保存索引到文件faiss::write_index(index, index.faissindex);// 从文件加载索引faiss::Index* loaded_index faiss::read_index(index.faissindex);// 执行搜索float xq[2] {1.0, 0.0}; // 查询向量int k 1; // 返回最接近的2个邻居faiss::idx_t* I new faiss::idx_t[k]; // 邻居索引float* D new float[k]; // 邻居距离// search 方法的主要参数如下 // n表示要搜索的查询向量的数量即查询向量的个数。 // x一个指向浮点数的指针表示查询向量的数据。x 的大小应该为 n 乘以向量的维度。 // k表示要返回的相似邻居的数量。 // distances一个指向浮点数的指针用于存储查询向量与相似邻居之间的距离。distances 的大小应该为 n 乘以 k。 // labels一个指向整数的指针用于存储相似邻居的索引标签。labels 的大小应该为 n 乘以 k。loaded_index-search(1, xq, k, D, I);// 打印结果std::cout 查询结果: std::endl;std::cout 邻居索引: I[0] , 距离: D[0] std::endl;//此时不再支持返回原向量。// 释放内存delete loaded_index;delete[] I;delete[] D;return 0; }
http://www.hkea.cn/news/14357361/

相关文章:

  • 服装店网页设计网站模板企业网站开发服务
  • 邯郸做网站公司上海游戏公司排名
  • 厦门建设局网站水果网页设计代码
  • 高端网络公司网站源码做图书出版 外国网站
  • 电商支付网站建设费进什么科目深圳招聘网站排行
  • 国外展览设计网站帝国cms获取网站地址
  • 建设安全工程信息网站电子商务设计网站建设
  • 网站建设企业哪里好12306网站开发多少钱
  • 惠州网站建设报价wordpress 没有外观
  • 北京软装设计公司有哪些网络营销品牌策划优化
  • 浙江省建设培训中心的网站WordPress阿里云oos
  • 拥有自己的网站建站宝盒小程序
  • 深圳seo网站优化公司全国新农村建设网站
  • 网站后台管理界面html广州排名网站关键词优化
  • 兰州网站建设公互动平台怎么注册
  • 上海 松江 网站制作做羞羞的事的视频网站
  • 进入公众号平台360网站排名优化
  • 重庆做商城网站公司注册地址是营业执照上的地址吗
  • 网站策划书模板网络营销怎么推广
  • 文学网站做编辑网站建设哪个公司的好
  • 济南住建局官方网站找国外人做网站
  • 最经典最常用的网站推广方式巩义关键词优化推广
  • 网站空间申请企业网站建设合同书
  • 做网站是做广告吗软件生成器下载
  • html5做静态网站建站行业的乱象
  • 国外注册机网站动画设计专业就业前景和就业方向
  • 域名注册的网站个人网页设计作品欣赏图片
  • 如何做网站词库wordpress调用自定义分类标题
  • 新建的网站百度多久才会收录国内创意网站界面设计
  • 查看网站注册信息网站开发工具中的三剑客