Linux基于thundersvm使用GPU对svm进行加速

news2024/11/24 20:29:55

Linux基于thundersvm使用GPU对svm进行加速

文章目录

  • Linux基于thundersvm使用GPU对svm进行加速
    • 下载方法
      • pip快速下载
        • 命令
      • 普通下载
        • 命令
        • 问题
        • 解决方法
          • 以下操作需要使用sudo权限
    • 使用thundersvm
      • 调用方式
    • 在代码中的使用
      • 训练代码更改
        • 更改内容
      • 加载模型同样需要导入thundersvm
        • 更改内容

下载方法

thundersvm—github

pip快速下载

使用pip install快速下载方式只适用于Linux的CUDA 9.0的情况

命令

pip install thundersvmpip install thundersvm-cu90-0.2.0-py3-none-linux_x86_64.whl

该wheel文件可以从thundersvm的GitHub上进行获取

image-20230629131036943

如果Linux的cuda版本不是9.0那么要使用下面的普通下载方式

普通下载

普通下载是通过git clone原项目然后在项目中进行构建的方式进行

命令

git clone https://github.com/Xtra-Computing/thundersvm.git

进入项目,构建cmake

cd thundersvm
mkdir build && cd build && cmake .. && make -j

问题

最常见的问题应该是关于 libthundersvm.so的问题

在执行上述buildmake j构建的过程中还可能会遇到一些包缺失**(比如cmake和libcurl3)**的问题

在我的情况下使用apt install安装cmake是会出现问题的,所以使用了snap

解决方法

以下操作需要使用sudo权限

首先安装libcurl3

sudo apt install libcurl3

image-20230629132446588

使用 sudo snap install cmake --classic 进行cmake的下载

image-20230629132532388

进入thundersvm刚刚创建的build目录,执行 sudo make install进行cmake的构建

image-20230629131837783

然后在程序的执行路径中导入thundersvm的路径,就可以使用了

具体使用方法如下

使用thundersvm

我使用的是thundersvm中的SVC函数

进入thundersvm项目根目录,会发现其下有一个python目录,这就是python下thundersvm的源码存放位置,要调用的thundersvm中的函数也都在这里实现

而我们要做的也就是调用该python脚本中函数

image-20230629132922133

可以看到thundersvm除了支持python之外还支持MATLAB和R语言,根据语言的函数调用方式可以进行调用然后使用GPU进行加速,实现的都是svm算法

image-20230629133011969

image-20230629133020407

接下来就是在程序中调用python目录下thundersvm目录中的thundersvm脚本

image-20230629133225019

调用方式

在代码中使用sys库引入该文件的执行路径(按道理来说cmake构建好了之后thundersvm就会添加到程序的执行路径中,然后直接import thundersvm就可以使用了,但是我在使用的时候没有识别到)

import sys
sys.path.append("thundersvm脚本的路径(建议使用绝对路径,省心)")

image-20230629133454243

将该执行路径添加之后,可以使用查看该程序中的执行路径

print(sys.path)

image-20230629133653410

可以看到我再进行cmake构建之后,thundersvm的执行路径并没有被检测到,所以需要手动添加

添加之后就可以引入thundersvm库,如果import成功即可以使用,即大功告成

import thundersvm
或
from thundersvm import SVC

这两个都一样

image-20230629133913446

看到可以使用之后就成功了,之后可以调用该库中的函数

在代码中的使用

训练代码更改

在代码中的使用非常简单, 只需要替换掉原先使用的svm函数即可

例如我要是用SVC函数进行模型的训练

之前的定义如下

from sklearn import svm
...
svc = svm.SVC(max_iter=96000, verbose=True)

更改内容

现在的定义如下

from thundersvm import SVC
...
svc = SVC(max_iter=96000, verbose=True)

即可

加载模型同样需要导入thundersvm

在使用joblib库对模型导出, 要放到混淆矩阵中进行模型性能评估时

例如如下过程将模型放到混淆矩阵中进行指标评测

import joblib

joblib.dump(model, "model.joblib") # 这里的.joblib后缀可以不加,即使不加导出的文件的类型也不会变化,但是加了可以增加识别度,让人一看就能看出来这是一个模型文件

model = joblib.load('model.joblib')

# 混淆矩阵
conf_mat = confusion_matrix(list(y_test), list(y_pred), labels=labels)

accuracy = accuracy_score(y_test, y_pred)
precision= precision_score(y_test, y_pred)
recall = recall_score(y_test, y_pred)
f1_score = f1_score(y_test, y_pred)

如果该模型是使用thundersvm训练出来的, 那么在加载的时候也需要thundersvm

因为 ThunderSVM 使用了自己的模型格式和内部实现,与其他 SVM 库(如 scikit-learn)的模型格式不兼容, 在加载模型时,需要使用 ThunderSVM 库解析和还原模型的参数以及使用相应的算法进行预测。

更改内容

所以上述代码应该添加thundersvm的库引入, 只需添加如下代码:

import sys
sys.path.append("thundersvm/python/thundersvm") #这里根据自己的路径进行更改

from thundersvm import SVC
...

即可

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

GC日志中的信息怎么看-1

GC日志中的信息怎么看 GC日志中括号里面是GC信息,包括GC前、后堆内存使用量和堆内存总大小 以一份GC日志为例: [GC (Allocation Failure) PSYoungGen: 1362K->297K(2048K)],表示在执行Young GC时,Young区占用了1362k的空间&a…

swagger3+nginx访问swagger-config报404问题解决

springboot2.7.11springdoc-openapi-ui1.6.14实现sagger3的接入,在使用nginx转发时遇到Failed to load remote configuration异常,查看请求发现在加载swagger-config时报404: 多番搜寻后找到这个地址:https://springdoc.org/faq.html#how-can…

希望脱颖而出的企业的23个社交媒体帖子创意

社交媒体已成为现代商业不可或缺的一部分。它为企业提供了前所未有的机会与客户建立联系并建立忠实的追随者。然而,由于社交媒体上有如此多的竞争声音,要脱颖而出比过去任何时候都更加困难。 在本文中,我们将分享23个社交媒体发帖创意&#…

使用ClimateLearn

来源 ClimateLearn官网使用介绍 ClimateLearn 是一个 Python 库,用于以标准化、直接的方式访问最先进的气候数据和机器学习模型。 背景 近年来,极端天气事件使气候变化的威胁更加明显。 袭击美国东部的大西洋飓风的强度和严重程度一直在增加。 倾盆大雨…

飞凌嵌入式荣获「ISO14001」和「ISO45001」双认证

近日,飞凌嵌入式荣获 ISO14001环境管理体系认证 和 ISO45001职业健康安全管理体系认证 两项证书,标志着飞凌嵌入式在规范化、标准化和科学化的现代企业管理轨道上更进一步。 荣获ISO14001环境管理体系认证证书无疑是对飞凌嵌入式现有管理体系、产品质量与…

kubernetes集群备份与恢复

目录 一、k8s集群备份与恢复 二、k8s备份-备份etcd 2.1 etcd v2版本数据备份与恢复 2.2 etcd v3版本数据备份与恢复 2.3 etcd数据备份脚本 1.1.4 k8s集群etcd备份恢复流程 三、k8s备份-velero 3.1 velero简介 3.2 velero部署 1.安装 2.准备镜像 3.准备对象存储 4.准…

JAVA-编程基础-01初始Java

Lison <dreamlison163.com>, v1.0.0, 2023.03.05 JAVA-编程基础-01-初始Java 文章目录 JAVA-编程基础-01-初始JavaJava语言概述Java是什么Java语言的特 初始Java的main方法Main 方法示例了解HelloWorld代码的编写 运行Java程序**JDK、JRE、JVM之间的关系&#xff1f;** …

人工成本上涨推动服务行业转向智能化

近年来&#xff0c;随着人工成本的不断上涨&#xff0c;越来越多的企业开始转向智能客服系统&#xff0c;以提供更高效、更经济的客户服务。智能客服的崛起成为了服务行业的新趋势&#xff0c;为企业节省成本、提升服务质量带来了巨大的机遇。 ** 智能接口测试地址&#xff1a;…

【CentOS】VirtualBox yum 无法使用

【CentOS】VirtualBox yum 无法使用 yum install net-tools -y出现如下错误&#xff1a; cannot find a valid baseurl for repo: base/7/x86_64或无法ping 解决如下&#xff1a; 进入系统&#xff0c;修改网卡信息。 执行修改命令&#xff0c;ifcfg-xxx 后面的xxx就是上面…

Linux系统下查看动态库依赖关系指令(ldd)

下面介绍一下在Linux系统下利用ldd指令查看动态库依赖关系&#xff1b; 文章目录 1、ldd命令全称2 ldd参数说明3 简单示例4 查看缺少的依赖库5、ldd指令详细介绍 LDD用来打印或者查看程序运行所需的共享库,常用来解决程序因缺少某个库文件而不能运行的一些问题。ldd不是一个可…

iPad平板用的触控笔什么牌子好?主动式电容笔推荐

现在&#xff0c;电容笔已经成为在线办公、在线教育等产业中的热门产品&#xff0c;那么&#xff0c;平替电容笔是否会代替苹果原有的电容笔呢&#xff1f;实际上&#xff0c;你根本不需要花那么多钱去买一个原装的苹果电容笔。一支普通的平替式电容笔只需要一两百元&#xff0…

在Uniapp中实现在线使用iconfont的图标

icanfont官网 iconfont官网&#xff1a;iconfont-阿里巴巴矢量图标库 在自己建的项目下&#xff1a;点击 Font Class 可以看到下面的在线 css文件 在 <style> 标签中&#xff0c;使用 import 指令来引入在线的 CSS 文件。例如&#xff1a; <style>import url…

西安石油大学期末考试C++真题解析

1、一、类型、返回值类型 二、参数表、函数重载 2、一、实例化 二、实例化的类型或类类是对象的蓝图&#xff0c;对象是类的实例化 3、const 4、一个 两个 5、一、公有继承 二、私有继承、保护继承 6、抽象类、实例化对象 7、函数模板、类模板 8、try、catch、throw 9、…

springboot 统一日志 链路跟踪 dubbo3链路 springboot log-starter 设计和实现- 统一日志和链路跟踪 管理、设计和实现

文章目录 1、目标2、源代码3、实现逻辑操作参数定义日志拦截器本地服务日志拦截调用微服务模块的日志保存接口继承日志工具类链路跟踪自实现 4、 logback.xml配置5、测试类测试http请求文件测试接口层 外传 springboot 统一日志 链路跟踪 dubbo3链路 springboot log-starter 设…

Springboot 定时任务,分布式下幂等性如何解决

一、概述&#xff1a; 在分布式环境下&#xff0c;定时任务的幂等性问题需要考虑多个节点之间的数据一致性和事务处理。 一种解决方法是使用分布式锁来保证同一时间只有一个节点能够执行该任务。具体实现可以使用Redis或Zookeeper等分布式协调工具提供的分布式锁功能。 另一…

CC2530 定时器配置步骤

第一章 CC2530时钟源 (1)时钟源 1、内部RC震荡器(32KHz、16MHz) 2、外部石英晶振(32.768KHz、32MHz) 注意:外部石英晶振比较稳定,在无线收发中采用外部石英晶振 (2)时钟源的切换 用于判断时钟源是否切换成功 第二章 定时/技术器的基本原理 定时/计数器,是一种…

(小程序)uniapp调接口完整流程

(小程序)uniapp调接口完整流程 代码&#xff1a; <script lang"ts" setup>import { ref } from "vue"; const form ref({searchVal: "", });//搜索const searchClick () > {console.log(form.value.searchVal)let data {text: form…

【C#】并行编程实战:实现数据并行(2)

本章继续学习实现数据并行&#xff0c;本文主要介绍任务并行度和自定义分区策略相关内容。 本教程对应学习工程&#xff1a;魔术师Dix / HandsOnParallelProgramming GitCode 2、任务并行度 数据并行设计在系统的多个内核上以并行方式运行循环所带来的的优势&#xff…

嵌入式系统:连接物理世界与数字世界的桥梁

目录 导语&#xff1a; 一. 什么是嵌入式系统&#xff1f; 二. 嵌入式系统的应用领域 三. 嵌入式系统的未来发展趋势 导语&#xff1a; 在当今数字时代&#xff0c;我们离不开各类智能设备的便利&#xff0c;它们在我们的生活中起着至关重要的作用。而这些设备中的关键技术…

基于Java+Swing+Mysql项目信息管理系统

基于JavaSwingMysql项目信息管理系统 一、系统介绍二、功能展示1.主页2.新增项目信息3.删除项目信息 三、数据库四、其他系统实现五、获取源码 一、系统介绍 该系统实现了查看项目列表、新增项目信息、删除项目信息 运行环境&#xff1a;eclipse、idea、jdk1.8 二、功能展示…