五类推理(逻辑推理、概率推理、图推理、基于深度学习的推理)的开源库 (一)
在开发中,有一些开源库可以实现不同类型的推理,包括逻辑推理、概率推理、图推理、基于深度学习的推理等。以下是五类推理(逻辑推理、概率推理、图推理、基于深度学习的推理)的现成开源库,它们各自的功能、特点和适用场景的详细介绍,并进行对比分析。
1. 逻辑推理推理:PyDatalog
-
库介绍:
- PyDatalog是一个Python的逻辑编程库,它将逻辑编程的功能引入到Python中,提供了在Python中进行规则推理的功能。
- 该库允许用户以声明式的方式编写规则,通过事实(facts)和规则(rules)来推导结论。
-
功能特点:
- 规则推理:可以进行基于规则的推理(如Datalog规则)。
- 高效查询:能够高效地进行查询和推理,类似于数据库中的查询语言(SQL)。
- 递归支持:支持递归查询,使得其在复杂的推理问题中表现良好。
-
应用场景:
- 适用于知识图谱推理、推理引擎、专家系统等需要规则推理的领域。
-
安装:
pip install pydatalog
-
示例代码:
from pydatalog import pydatalogpydatalog.create_terms('X, Y, parent')# 定义事实 +parent('John', 'Mary') +parent('Mary', 'Steve')# 定义规则 print(parent('John', 'Mary')) # True print(parent('Mary', 'Steve')) # True print(parent('John', 'Steve')) # True, 通过递归推理得到
2. 概率推理:pgmpy
(Probabilistic Graphical Models in Python)
-
库介绍:
- pgmpy是一个用于构建和推理概率图模型的Python库。它支持贝叶斯网络、马尔可夫网络等模型,并提供了推理、学习、采样等功能。
- 该库能够实现复杂的概率推理任务,支持计算条件概率、边缘概率等。
-
功能特点:
- 贝叶斯网络推理:支持基于贝叶斯网络的推理,可以进行条件概率推断。
- 马尔可夫链推理:支持马尔可夫链的推理。
- 概率推理算法:提供了多种推理算法,如变量消除、蒙特卡洛方法等。
-
应用场景:
- 适用于风险分析、医学诊断、金融预测等领域。
-
安装:
pip install pgmpy
-
示例代码:
from pgmpy.models import BayesianNetwork from pgmpy.factors.discrete import DiscreteFactor from pgmpy.inference import VariableElimination# 定义贝叶斯网络结构 model = BayesianNetwork([('A', 'C'), ('B', 'C')])# 添加概率分布 model.add_cpds(DiscreteFactor(['A'], [2], [0.2, 0.8])) model.add_cpds(DiscreteFactor(['B'], [2], [0.5, 0.5])) model.add_cpds(DiscreteFactor(['C'], [2, 2], [0.1, 0.9, 0.5, 0.5]))# 使用推理引擎进行推理 inference = VariableElimination(model) print(inference.query(variables=['C'], evidence={'A': 1, 'B': 0}))
3. 图推理:DGL
(Deep Graph Library)
-
库介绍:
- DGL是一个专注于图神经网络(GNNs)模型的深度学习库,它支持各种图推理算法,包括图卷积网络(GCN)、图注意力网络(GAT)等。
- DGL提供了高效的图神经网络训练和推理功能,广泛应用于图数据的建模与推理任务。
-
功能特点:
- 图神经网络:支持常见的图神经网络模型,如GCN、GAT、GraphSAGE等。
- 高效并行计算:通过支持多GPU加速训练,适合大规模图数据。
- 灵活性强:提供了图卷积、图注意力等常用层和工具,适应多种图结构数据。
-
应用场景:
- 适用于社交网络分析、推荐系统、图像-文本关联等图结构数据的推理任务。
-
安装:
pip install dgl
-
示例代码:
import dgl import torch from dgl.nn import GraphConv# 创建一个图 g = dgl.graph(([0, 1], [1, 2]))# 定义一个简单的图卷积层 conv = GraphConv(2, 2)# 初始化节点特征 g.ndata['h'] = torch.ones(3, 2)# 执行图卷积 h = conv(g, g.ndata['h']) print(h)
4. 基于深度学习的推理:TensorFlow
/ PyTorch
-
库介绍:
- TensorFlow和PyTorch是当前深度学习领域最常用的两个库,均支持通过深度学习模型进行推理。
- 这两个框架都可以通过训练好的神经网络进行推理任务,广泛应用于计算机视觉、自然语言处理等领域。
-
功能特点:
- 深度学习框架:支持构建、训练和推理深度神经网络。
- 灵活性:两者均具有高灵活性,支持自定义模型和推理过程。
- 社区活跃:TensorFlow和PyTorch均有广泛的社区支持,拥有大量的预训练模型和文档。
-
应用场景:
- 适用于几乎所有深度学习应用领域,如图像分类、目标检测、语音识别、自然语言推理等。
-
安装:
pip install tensorflow # TensorFlow pip install torch # PyTorch
5. 综合推理引擎:spaCy
-
库介绍:
- spaCy是一个用于自然语言处理的开源库,它支持多种推理任务,包括命名实体识别(NER)、句法依存分析、文本分类等。
- 它结合了机器学习和规则推理,适用于大规模文本数据的推理任务。
-
功能特点:
- 文本推理:支持文本分类、实体识别、情感分析等推理任务。
- 机器学习+规则推理:结合了基于规则的推理和基于机器学习的推理,适应多种场景。
-
应用场景:
- 适用于文本分类、情感分析、命名实体识别等自然语言处理任务。
-
安装:
pip install spacy
-
示例代码:
import spacy# 加载预训练模型 nlp = spacy.load('en_core_web_sm')# 进行推理 doc = nlp("Apple is looking at buying U.K. startup for $1 billion") for ent in doc.ents:print(ent.text, ent.label_)
对比分析:
特性 | PyDatalog | pgmpy | DGL | TensorFlow/PyTorch | spaCy |
---|---|---|---|---|---|
推理类型 | 逻辑推理 | 概率推理 | 图推理 | 深度学习推理 | 文本推理 |
应用场景 | 知识图谱、专家系统 | 风险分析、医学诊断、预测 | 社交网络分析、推荐系统 | 图像、语音、NLP、时间序列预测 | 文本分类、命名实体识别等 |
推理方式 | 基于规则的推理 | 基于贝叶斯网络、马尔可夫链 | 基于图神经网络的推理 | 基于深度神经网络的推理 | 基于机器学习+规则的推理 |
灵活性 | 较高 | 高 | 高 | 非常高 | 高 |
易用性 | 易用 | 较为复杂 | 较复杂 | 复杂但强大 | 易用,适合NLP任务 |
性能 | 高 | 高 | 高效并行计算 | 高效并行计算 | 高 |
开源许可证 | MIT | Apache 2.0 | Apache 2.0 | Apache 2.0 | MIT |
总结:
- PyDatalog适用于基于规则的推理任务,尤其是需要逻辑推理和规则推导的场景。
- pgmpy适合进行概率推理,尤其是在贝叶斯网络或马尔可夫链模型中使用。
- DGL适用于图推理任务,通过图神经网络处理复杂的图结构数据。
- TensorFlow/PyTorch是最通用的深度学习框架,适合各种基于深度学习的推理任务,尤其是计算机视觉、NLP等领域。
- spaCy则专注于文本数据的推理,适用于自然语言处理任务,结合了机器学习和规则推理。
不同的推理库在各自的领域有独特的优势,可以根据任务的性质选择合适的推理方法。
相关文章:
五类推理(逻辑推理、概率推理、图推理、基于深度学习的推理)的开源库 (一)
在开发中,有一些开源库可以实现不同类型的推理,包括逻辑推理、概率推理、图推理、基于深度学习的推理等。以下是五类推理(逻辑推理、概率推理、图推理、基于深度学习的推理)的现成开源库,它们各自的功能、特点和适用场…...
java Redisson 实现限流每秒/分钟/小时限制N个
1.引入maven包: <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency><dependency><groupId>org.redisson</groupId><artifactId>red…...
麒麟操作系统服务架构保姆级教程(八)数据库拆分静态业务拆分和负载均衡
当我们网站的访问量提升上来了,平均每分钟上千条访问量,但是服务器的性能是有限的,所以就需要将单台的架构进行拆分了,但是web服务器的内容不同怎么办,就会用到咱们的共享存储,两台web服务器今天咱们将LNMP…...
LQ24fresh
目录 C. 录入成绩 D. 标记名字 E. 奖杯排列 C. 录入成绩 (1)以国特 G 为切入点,枚举每一个 G 单独时是否为合法字符串,若合法 G1 有多少个 (2)用到的两个 string 函数: s.erase( i, a ) &…...
Postman[8] 断言
1.常见的断言类型 status code: code is 200 //检查返回的状态码是否为200 Response body: contain string //检查响应中包含指定字符串包含指定的值 response body:json value check/ /检查响应中其中json的值 Response body: is equal to string …...
YOLOv8/YOLOv11改进 添加CBAM、GAM、SimAM、EMA、CAA、ECA、CA等多种注意力机制
目录 前言 CBAM GAM SimAM EMA CAA ECA CA 添加方法 YAML文件添加 使用改进训练 前言 本篇文章将为大家介绍Ultralytics/YOLOv8/YOLOv11中常用注意力机制的添加,可以满足一些简单的涨点需求。本文仅写方法,原理不多讲解,需要可跳…...
C语言return与 ? :
上次讲解过一次函数,函数要配合return返回东西,但是在编写一些程序的时候我发现了很多冷门逻辑语法还没有掌握,当时讲课也是看一眼就过去了(死去的记忆开始攻击我) Return,爽! 现在有一个小问…...
持续大额亏损,销量增幅有限,北汽蓝谷依旧黯然神伤
撰稿 | 行星 来源 | 贝多财经 “起了个大早,赶了个晚集”,用在如今的北汽蓝谷身上再合适不过。 2025年的第一个工作日,北汽蓝谷新能源科技股份有限公司(SH:600733,简称“北汽蓝谷”)对外披露了子公司北京…...
(五)开机自启动以及scp工具文件传输小问题
文章目录 程序开机自启动先制作一个可执行程序第一种 通过命令行实现程序开机自启动第二种 通过 Linux 系统镜像实现程序开机自启动 scp工具文件传输小问题 程序开机自启动 原因:做成产品后,用户直接开机使用,总不能在开机执行程序后才可以使…...
数据挖掘——支持向量机分类器
数据挖掘——支持向量机分类器 支持向量机最小间隔面推导基于软间隔的C-SVM非线性SVM与核变换常用核函数 支持向量机 根据统计学习理论,学习机器的实际风险由经验风险值和置信范围值两部分组成。而基于经验风险最小化准则的学习方法只强调了训练样本的经验风险最小…...
自动化办公 | 根据成绩进行自动评级
今天我们将介绍一个常见的自动化办公需求:根据成绩自动评级。通过这篇文章,我们将介绍如何利用Python进行自动化办公,将表格中的成绩根据预定的规则进行评级,并生成一个新的带评级信息的表格。 需求背景 我们有一个表格…...
Java强引用、软引用、弱引用、虚引用的区别?
大家好,我是锋哥。今天分享关于【Java强引用、软引用、弱引用、虚引用的区别?】面试题。希望对大家有帮助; Java强引用、软引用、弱引用、虚引用的区别? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 在Java中&#…...
pikachu靶场--目录遍历和敏感信息泄露
pikachu靶场—目录遍历和敏感信息泄露 目录遍历 概述 在web功能设计中,很多时候我们会要将需要访问的文件定义成变量,从而让前端的功能便的更加灵活。 当用户发起一个前端的请求时,便会将请求的这个文件的值(比如文件名称)传递到后台,后台再…...
【Unity3D】UGUI Canvas画布渲染流程
参考文档:画布 - Unity 手册 Canvas组件:画布组件是进行 UI 布局和渲染的抽象空间。所有 UI 元素都必须是附加了画布组件的游戏对象的子对象。 参数: Render Mode 渲染模式:Screen Space - Overlay、Screen Spa…...
【办公类-47-02】20250103 课题资料快速打印(单个docx转PDF,多个pdf合并一个PDF 打印)
背景需求: 2023区级大课题《运用Python优化3-6岁幼儿学习活动材料的实践研究》需要做阶段资料 本来应该2024年6月就提交电子稿和打印稿。可是python学具的教学实验实在太多了,不断生成,我忙着做教学,都没有精力去整理。 2025年…...
ELK 使用教程采集系统日志 Elasticsearch、Logstash、Kibana
前言 你知道对于一个系统的上线考察,必备的几样东西是什么吗?其实这也是面试中考察求职者,是否真的做过系统开发和上线的必备问题。包括:服务治理(熔断/限流) (opens new window)、监控 (opens new window)和日志,如果…...
把vue项目或者vue组件发布成npm包或者打包成lib库文件本地使用
将vue项目发布成npm库文件,第三方通过npm依赖安装使用;使用最近公司接了一个项目,这个项目需要集成到第三方页面,在第三方页面点击项目名称,页面变成我们的项目页面;要求以npm库文件提供给他们;…...
遇到复杂的 递归查询sql 需要oracle 转pgsql 可以把数据表结构给ai
遇到复杂的 递归查询sql 需要oracle 转pgsql 可以把数据表结构给ai 并且 建立备份表 把需要的很少的数据放到表里面 这样 ai 可以很好的判断sql 咋写 还可以,让ai解释oracle sql 然后拿到描述和表和字段,给ai让他生成pgsql 的sql,亲测有效...
smell---Paddle-DI
跨模态文档智能大模型–Ernie-Layout 目标:提取文档中无结构或半结构化的知识 github项目地址 Paddle NLP ERNIE-Layout基于Transformer Encode架构,并提出以下trick: 1、OCR工具提取信息 借助OCR工具提取图片中的文字及文字对应的坐标信息…...
【JavaWeb后端学习笔记】MySQL的数据控制语言(Data Control Language,DCL)
MySQL DCL 1、管理用户2、控制权限 DCL英文全称是Data Control Language(数据控制语言),用来管理数据库用户、控制数据库访问权限。 1、管理用户 管理用户的操作都需要在MySQL自带的 mysql 数据库中进行。 -- 查询用户 -- 需要先切换到MyS…...
python +tkinter绘制彩虹和云朵
python tkinter绘制彩虹和云朵 彩虹,简称虹,是气象中的一种光学现象,当太阳光照射到半空中的水滴,光线被折射及反射,在天空上形成拱形的七彩光谱,由外圈至内圈呈红、橙、黄、绿、蓝、靛、紫七种颜色。事实…...
【银河麒麟高级服务器操作系统实例】tcp半链接数溢出分析及处理全过程
了解更多银河麒麟操作系统全新产品,请点击访问 麒麟软件产品专区:https://product.kylinos.cn 开发者专区:https://developer.kylinos.cn 文档中心:https://document.kylinos.cn 服务器环境以及配置 系统环境 物理机/虚拟机/云…...
python实现,outlook每接收一封邮件运行检查逻辑,然后发送一封邮件给指定邮箱
以下是一个使用 Python 和 win32com.client 模块实现的示例代码,每当 Outlook 接收到一封新邮件时,执行检查逻辑并发送一封邮件到指定邮箱。这个代码依赖于 Windows 系统和安装了 Microsoft Outlook。 环境准备 确保安装了 pywin32 库:pip …...
HTML——70. 多行文本输入框
<!DOCTYPE html> <html><head><meta charset"UTF-8"><title>多行文本输入框</title></head><body><!--单行文本输入框在输入长度超过文本框长度,则超出部分会被隐藏掉(即超出部分看不到&a…...
leetcode题目(3)
目录 1.加一 2.二进制求和 3.x的平方根 4.爬楼梯 5.颜色分类 6.二叉树的中序遍历 1.加一 https://leetcode.cn/problems/plus-one/ class Solution { public:vector<int> plusOne(vector<int>& digits) {int n digits.size();for(int i n -1;i>0;-…...
Spring Security(maven项目) 3.0.2.4版本
前言: 通过实践而发现真理,又通过实践而证实真理和发展真理。从感性认识而能动地发展到理性认识,又从理性认识而能动地指导革命实践,改造主观世界和客观世界。实践、认识、再实践、再认识,这种形式,循环往…...
ArcgisServer过了元旦忽然用不了了?许可过期
昨天过完元旦之后上班发现好多ArcgisServer的站点运行出错了,点击日志发现,说是许可过去,也就是当时安装ArcgisServer时读取的ecp文件过期了,需要重新读取。 解决方法 1.临时方法,修改系统时间,早于2024年…...
Ubuntu22.04配置静态ip
1. 编辑网络配置文件 sudo vim /etc/netplan/00-installer-config.yaml 2.输入下面配置 将静态ip设置为192.168.3.200 ,并设置路由器地址192.168.3.1,以及dns地址 223.5.5.5和223.6.6.6 dhcp4: false 表示取消动态分配ip network:ethernets:e…...
router 动态路由与懒加载
路由的使用 静态路由 静态路由: 引入组件然后挂载到router的component下,这样在页面刷新时,就会直接请求引入, 当项目越来越大时, 初始化的时间就会越来越长,因为它要将所有的页面全部引入后才会去渲染页面. 不管你当前页面有没有用到, 初始化是加载的是项目中所有组件,以及t…...
网络安全 | 信息安全管理体系(ISMS)认证与实施
网络安全 | 信息安全管理体系(ISMS)认证与实施 一、前言二、信息安全管理体系(ISMS)概述2.1 ISMS 的定义与内涵2.2 ISMS 的核心标准 ——ISO/IEC 27001 三、信息安全管理体系(ISMS)认证3.1 认证的意义与价值…...
【机器学习:一、机器学习简介】
机器学习是当前人工智能领域的重要分支,其目标是通过算法从数据中提取模式和知识,并进行预测或决策。以下从 机器学习概述、有监督学习 和 无监督学习 三个方面进行介绍。 机器学习概述 机器学习定义 机器学习(Machine Learning࿰…...
DjangoORM字段参数、常用字段类型及参数、模型和表单验证器详解
由于项目原因必须使用DjangoORM模型,所以今天整理了一下关于DjangoORM模型里的详细内容。包含字段参数、常用字段类型及参数、模型和表单验证器。 一、通用字段参数 这些参数可以应用于多种字段类型: (1)null:如果为 …...
【pyqt】(四)Designer布局
布局 之前我们利用鼠标拖动的控件的时候,发现一些部件很难完成对齐这些工作,pyqt为我们提供的多种布局功能不仅可以让排版更加美观,还能够让界面自适应窗口大小的变化,使得布局美观合理。最常使用的三种布局就是垂直河子布局、水…...
每日一学——自动化工具(Jenkins)
3.2 Jenkins 3.2.1 CI/CD流程设计 嘿,小伙伴们!今天我们来聊聊Jenkins——这个在持续集成(CI)和持续部署(CD)领域里大名鼎鼎的工具。Jenkins不仅可以帮我们自动化构建和测试代码,还能自动部署…...
k8s基础(1)—Kubernetes-Pod
一、Pod简介 Pod是Kubernetes(k8s)系统中可以创建和管理的最小单元,是资源对象模型中由用户创建或部署的最小资源对象模型。Pod是由一个或多个容器组成的,这些容器共享存储和网络资源,可以看作是一个逻辑的主机。…...
《Java核心技术 卷II》流的创建
流的创建 Collection接口中stream方法可以将任何集合转换为一个流。 用静态Stream.of转化成数组。 Stream words Stream.of(contents.split("\\PL")); of方法具有可变长参数,可以构建具有任意数量的流。 使用Array.stream(array,from,to)可以用数组…...
单片机实物成品-010 智能宠物喂食系统(代码+硬件+论文)
项目介绍 版本1:oled显示定时投喂(舵机模拟)声光报警显示实时时间 ---演示视频: 智能宠物喂食001_哔哩哔哩_bilibili 1. STM32F103C8T6 单片机进行数据处理 2. OLED 液晶显示 3,按键1 在数据显示界面时按下按键1切…...
我用AI学Android Jetpack Compose之开篇
打算写一个系列,我用AI学Android Jetpack Compose,本教程需要有一定Android开发基础的同学,至少能运行成功Hello World!会基本的Java或Kotlin语法,如果不会,先去学习基本的Android应用开发,推荐…...
算法题(24):只出现一次的数字(二)
审题: 数组中除了答案元素只出现一次外,其他元素都会出现三次,我们需要找到并返回答案元素 思路: 由于现在会出现三次,所以利用异或运算符的方法就会失效。而所有数据都在32位二进制范围内,所以我们采用依次…...
计算机网络 (15)宽带接入技术
前言 计算机网络宽带接入技术是指通过高速、大容量的通信信道或网络,实现用户与互联网或其他通信网络之间的高速连接。 一、宽带接入技术的定义与特点 定义:宽带接入技术是指能够传输大量数据的通信信道或网络,其传输速度通常较高,…...
什么是索引
在数据库管理系统中,索引是一种数据结构,用于快速定位数据库表中的特定记录。索引类似于一本书的目录,可以帮助数据库引擎迅速找到所需的数据,而不必扫描整个表。 类型:常见的数据库索引类型包括B树索引、哈希索引、全…...
【数据结构】树链刨分
1 u v k,修改路径上节点权值,将节点 uu 和节点 vv 之间路径上的所有节点(包括这两个节点)的权值增加 kk。2 u k,修改子树上节点权值,将以节点 uu 为根的子树上的所有节点的权值增加 kk。3 u v,询…...
perl包安装的CPAN大坑
先看一个用cpan安装的例子。 $cpan -i App::cpanminus Loading internal logger. Log::Log4perl recommended for better logging Reading /home/wubin/.cpan/MetadataDatabase was generated on Tue, 24 Dec 2024 15:29:01 GMT Running install for module App::cpanminusTry…...
打造三甲医院人工智能矩阵新引擎(四):医疗趋势预测大模型篇 EpiForecast与DeepHealthNet合成应用
一、引言 1.1 研究背景与意义 在当今数字化时代,医疗领域积累了海量的数据,涵盖电子病历、医学影像、基因序列、临床检验结果等多源异构信息。这些数据蕴含着疾病发生发展、治疗反应、疫情传播等规律,为医疗趋势预测提供了数据基础。准确的医疗趋势预测能辅助医疗机构提前…...
RSA e与phi不互质(AMM算法进行有限域开根)
e与phi不互质 这一部分学习来自trup师傅的博客 针对CTFer的e与phi不互素的问题 - 跳跳糖 1:m^t<n from Crypto.Util.number import * from secret import flag flag bflag{*********} m bytes_to_long(flag) p getPrime(1024) q getPrime(1024) n p * q …...
021-spring-springmvc-组件
SpringMVC的handMapping 比较重要的部分 比较重要的部分 比较重要的部分 关于组件的部分 这里以 RequestMappingHandlerMapping 为例子 默认的3个组件是: org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping org.springframework.web.servlet.mvc…...
【Leecode】Leecode刷题之路第99天之恢复二叉搜索树
题目出处 99-恢复二叉搜索树-题目出处 题目描述 个人解法 思路: todo代码示例:(Java) todo复杂度分析 todo官方解法 99-恢复二叉搜索树-官方解法 方法1:显式中序遍历 思路: 代码示例:&…...
【从零开始入门unity游戏开发之——C#篇41】C#迭代器(Iterator)——自定义类实现 foreach 操作
文章目录 前言一、什么是迭代器?二、标准迭代器的实现方法1、自定义一个类CustomList2、让CustomList继承IEnumerable接口3、再继承IEnumerator接口4、完善迭代器功能5、**foreach遍历的本质**:6、在Reset方法里把光标复原 三、用yield return语法糖实现…...
运算符重载 - 自定义运算符行为
引言 C 是一种支持面向对象编程(OOP)的编程语言,它允许程序员通过运算符重载来自定义类的行为。运算符重载使得我们可以为自定义类型定义与内置类型相似的操作方式,从而使代码更加直观和易读。 本文将详细介绍 C 中的运算符重载…...
RabbitMQ-基本使用
RabbitMQ: One broker to queue them all | RabbitMQ 官方 安装到Docker中 docker run \-e RABBITMQ_DEFAULT_USERrabbit \-e RABBITMQ_DEFAULT_PASSrabbit \-v mq-plugins:/plugins \--name mq \--hostname mq \-p 15672:15672 \-p 5672:5672 \--network mynet\-d \rabbitmq:3…...