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

深度学习与知识图谱嵌入的结合:从理论到实践

知识图谱嵌入方法主要包括两大类:

方法类型描述
矩阵分解类方法基于传统矩阵分解思想,将知识图谱的三元组表示为多个矩阵,并通过分解获得低维向量表示。
神经网络方法结合深度学习技术,通过神经网络自动学习知识图谱中实体和关系的向量表示。

神经网络方法通过其强大的表达能力,能够捕捉更复杂的语义信息,因此逐渐取代传统的矩阵分解类方法。

知识图谱嵌入与深度学习结合的主要模型有:

模型类型描述
TransE基于平移模型,通过一个简单的平移操作将实体和关系嵌入到向量空间中。
ConvE使用卷积神经网络(CNN)进行三元组的嵌入。
R-GCN基于图卷积网络(GCN),适用于处理大规模稀疏的知识图谱。
ComplEx将实体和关系映射到复数空间,捕捉更复杂的语义信息。

在接下来的章节中,我们将重点介绍如何结合 R-GCN(关系图卷积网络)与深度学习技术来实现知识图谱嵌入,并通过代码实例展示其具体实现。


R-GCN:关系图卷积网络

R-GCN 是一种改进的图卷积网络,专门用于处理知识图谱中的稀疏关系数据。与传统的 GCN 不同,R-GCN 能够通过定义不同类型的邻居节点进行消息传递,从而更有效地捕捉实体间的关系。

R-GCN 的核心思想是为每种关系定义一个独立的权重矩阵,通过卷积操作将实体的特征信息传播到其邻居节点。我们可以通过公式表示这种关系:

'$h_i^{(l+1)} = \sigma \left( \sum{r \in \mathcal{R}} \sum{j \in \mathcal{N}i^r} \frac{1}{c{i,r}} W_r^{(l)} h_j^{(l)} + W_0^{(l)} h_i^{(l)} \right) $'

其中:

  • '$h_i^{(l)}$' 是第 (l) 层时实体 (i) 的表示。

  • '$mathcal{R}$' 是所有关系的集合。

  • '$W_r^{(l)}$' 是与关系 (r) 相关的权重矩阵。


数据准备与预处理

在实现 R-GCN 之前,我们需要准备一个标准的知识图谱数据集。我们使用一个简单的示例数据集 books_data.txt 来展示如何将文本数据转化为知识图谱格式。

示例数据集:

书名: 《深度学习》, 作者: Ian Goodfellow, 出版社: MIT Press
书名: 《机器学习》, 作者: Tom Mitchell, 出版社: McGraw-Hill Education
书名: 《数据挖掘》, 作者: Jiawei Han, 出版社: Morgan Kaufmann

我们首先将该数据转换为三元组表示:

import re
​
# 读取数据文件
with open('books_data.txt', 'r', encoding='utf-8') as file:raw_data = file.readlines()
​
# 定义正则表达式匹配书名、作者和出版社
pattern = r"书名: 《(.*?)》, 作者: (.*?), 出版社: (.*?)\n"
​
# 解析并清洗数据,转换为三元组格式
triples = []
for line in raw_data:match = re.match(pattern, line)if match:book, author, publisher = match.groups()triples.append((book, "作者", author))triples.append((book, "出版社", publisher))
​
# 打印清洗后的三元组数据
for triple in triples:print(triple)

输出的三元组将类似于:

('深度学习', '作者', 'Ian Goodfellow')
('深度学习', '出版社', 'MIT Press')
('机器学习', '作者', 'Tom Mitchell')
('机器学习', '出版社', 'McGraw-Hill Education')
('数据挖掘', '作者', 'Jiawei Han')
('数据挖掘', '出版社', 'Morgan Kaufmann')

这些三元组是我们后续模型训练的输入数据。


模型构建与训练

现在我们使用 PyTorch 和 DGL(Deep Graph Library)来实现 R-GCN 模型。

1 安装依赖库

安装所需的库:

pip install torch dgl

2 定义 R-GCN 模型

import torch
import torch.nn as nn
import dgl
from dgl.nn import RelGraphConv
​
# 定义 R-GCN 模型
class RGCN(nn.Module):def __init__(self, in_feat, hidden_feat, out_feat, num_rels):super(RGCN, self).__init__()self.conv1 = RelGraphConv(in_feat, hidden_feat, num_rels, regularizer='basis', num_bases=4)self.conv2 = RelGraphConv(hidden_feat, out_feat, num_rels, regularizer='basis', num_bases=4)def forward(self, g, feat, etype):h = self.conv1(g, feat, etype)h = torch.relu(h)h = self.conv2(g, h, etype)return h
​
# 创建图并定义特征
num_nodes = 6
num_rels = 2  # '作者' 和 '出版社' 两种关系
g = dgl.graph(([], []), num_nodes=num_nodes)  # 初始化图结构
feat = torch.eye(num_nodes)  # 使用单位矩阵作为初始特征
etype = torch.LongTensor([0, 1])  # 关系类型编码

3 模型训练

# 模型训练函数
def train(model, g, feat, etype, epochs=100, lr=0.01):optimizer = torch.optim.Adam(model.parameters(), lr=lr)loss_fn = nn.CrossEntropyLoss()for epoch in range(epochs):model.train()logits = model(g, feat, etype)loss = loss_fn(logits, etype)optimizer.zero_grad()loss.backward()optimizer.step()if epoch % 10 == 0:print(f"Epoch {epoch}/{epochs}, Loss: {loss.item()}")
​
# 初始化模型并开始训练
model = RGCN(in_feat=6, hidden_feat=16, out_feat=2, num_rels=num_rels)
train(model, g, feat, etype)

  • 我们使用 RelGraphConv 来实现关系图卷积网络,其中 in_feat 是输入特征维度,hidden_feat 是隐藏层维度,out_feat 是输出特征维度,num_rels 是关系的种类数量。

  • train() 函数定义了模型的训练过程,其中包括交叉熵损失计算和梯度下降优化。

  • 在模型训练过程中,网络会不断调整参数,使得知识图谱中的实体和关系嵌入在一个连续的低维空间中,从而能够更好地表达复杂的语义关系。


模型部署与应用

在完成知识图谱嵌入模型的训练后,接下来的步骤是将模型部署到实际应用场景中。这一步尤为关键,因为它决定了模型能否在实际业务中发挥其应有的价值。知识图谱嵌入模型可以应用于多种场景,如推荐系统关系推理知识补全等。在本节中,我们将详细讨论如何基于训练好的 R-GCN 模型实现以下两个典型应用:实体推荐关系推理

实体推荐

实体推荐是知识图谱嵌入的一项重要应用,特别是在内容推荐系统中。通过学习知识图谱中的实体及其之间的关系,我们可以为用户提供更加个性化的推荐服务。

1 推荐系统的背景

在传统的推荐系统中,协同过滤(Collaborative Filtering)和基于内容的推荐(Content-Based Recommendation)是两种主流方法。然而,这些方法往往局限于已有的用户行为数据或内容特征,缺乏对潜在知识的挖掘能力。

知识图谱嵌入通过将结构化的知识图谱映射到低维向量空间中,能够捕捉实体之间的复杂语义关系。这种语义关系对于提高推荐系统的性能至关重要。例如,如果一本书和另一位作者通过复杂的关系连接在一起,嵌入向量可以表示这种潜在关联,从而为用户推荐更具相关性的书籍。

2 推荐算法的设计

通过 R-GCN 模型训练出的实体和关系嵌入,我们可以根据用户的历史行为推荐相关书籍或作者。具体来说,我们首先为每个书籍实体生成嵌入向量,然后根据用户阅读过的书籍嵌入向量,计算与其他书籍的相似度,并推荐相似度最高的书籍。

在下面的代码中,假设用户已经阅读了索引为 book_index 的书籍。我们将通过计算该书籍嵌入与其他书籍嵌入的余弦相似度,来推荐前 top_k 个相似度最高的书籍。

import torch
​
# 示例推荐函数
def recommend_books(model, g, feat, etype, book_index, top_k=3):model.eval()  # 将模型设置为评估模式with torch.no_grad():  # 禁用梯度计算logits = model(g, feat, etype)  # 获取所有节点的嵌入scores = logits[book_index]  # 获取指定书籍的嵌入向量# 计算与其他书籍嵌入的余弦相似度similarities = torch.matmul(logits, scores.T)top_scores, top_indices = torch.topk(similarities, top_k)  # 获取前k个相似度最高的书籍return top_indices, top_scores
​
# 假设用户阅读了索引为0的书籍,获取推荐书籍
recommended_books, similarity_scores = recommend_books(model, g, feat, etype, book_index=0)
print(f"推荐书籍索引: {recommended_books}, 相似度: {similarity_scores}")
  • model.eval(): 设置模型为评估模式,以确保在推理时不会影响模型参数的梯度更新。

  • torch.no_grad(): 禁用梯度计算,以提高推理速度和减少内存消耗。

  • torch.matmul(logits, scores.T): 计算每个书籍嵌入向量与目标书籍嵌入向量之间的余弦相似度。

  • torch.topk(): 获取相似度最高的 top_k 本书籍。

3 实际应用场景

在实际场景中,实体推荐系统可以用于以下几种应用:

应用场景描述
图书推荐基于用户历史阅读记录,推荐与之相关的书籍、作者或出版物。
视频推荐根据用户观看过的视频,推荐内容相关或制作团队相关的其他视频。
电商推荐根据用户购买历史,推荐相关的商品或品牌。
社交网络推荐根据用户互动的朋友,推荐可能感兴趣的其他好友或社交群体。

关系推理

关系推理是知识图谱嵌入的另一个重要应用,它用于推断知识图谱中可能缺失的关系。例如,在知识图谱中,如果我们知道一个作者和某些出版社有联系,但该作者的部分书籍未被记录为与该出版社有关联,我们可以通过关系推理填补这些缺失的数据。

1 关系推理的背景

知识图谱在构建过程中往往存在信息不完整或数据缺失的问题。通过知识图谱嵌入模型,我们可以推断出实体之间的潜在关系,并补充到原有的图谱中。例如,在图谱中推断出某本书的未标注出版社,或者推断出某个用户与特定物品之间的潜在偏好关系。

传统的图谱补全方法通常依赖于规则或专家知识,而知识图谱嵌入通过自动学习实体和关系的低维向量表示,可以在不完全依赖规则的情况下进行关系预测。

2 关系推理算法的设计

在使用 R-GCN 进行关系推理时,我们可以根据已有实体嵌入和关系类型,推断出新的实体对及其潜在关系。具体来说,对于一个给定的三元组 ( (h, r, t) ),我们可以计算其得分函数,并选择得分最高的实体对作为预测结果。

下面的代码展示了如何基于 R-GCN 模型进行关系推理,以预测书籍与可能的出版社之间的关系。

import torch.nn.functional as F
​
# 关系推理函数
def infer_relations(model, g, feat, etype, head_index, relation_type, top_k=3):model.eval()  # 设置模型为评估模式with torch.no_grad():# 获取所有实体的嵌入logits = model(g, feat, etype)head_entity = logits[head_index]  # 获取头实体的嵌入向量# 对所有实体计算头实体与尾实体的相似度scores = F.cosine_similarity(logits, head_entity.unsqueeze(0), dim=-1)top_scores, top_indices = torch.topk(scores, top_k)  # 获取前k个相似度最高的尾实体return top_indices, top_scores
​
# 假设要推断与书籍相关的出版社
inferred_publishers, relation_scores = infer_relations(model, g, feat, etype, head_index=0, relation_type="出版社", top_k=3)
print(f"推断的出版社索引: {inferred_publishers}, 关系得分: {relation_scores}")
  • F.cosine_similarity(): 计算头实体和每个候选尾实体之间的余弦相似度。

  • head_entity.unsqueeze(0): 将头实体的嵌入向量扩展为二维,以便与所有尾实体嵌入进行批量相似度计算。

  • relation_type: 指定要推断的关系类型(如“出版社”或“作者”)。

3 实际应用场景

关系推理可以用于解决以下实际问题:

应用场景描述
知识补全在知识图谱中推断缺失的关系,例如推断未知的书籍作者或电影导演。
用户偏好预测在推荐系统中推断用户的潜在偏好,预测用户可能喜欢的商品或内容。
反事实推理在知识图谱推理中模拟“如果…那么…”的情境,推断在假设条件下可能发生的关系。
问答系统增强增强问答系统的推理能力,回答基于推理和潜在关系的信息请求。

相关文章:

深度学习与知识图谱嵌入的结合:从理论到实践

知识图谱嵌入方法主要包括两大类: 方法类型描述矩阵分解类方法基于传统矩阵分解思想,将知识图谱的三元组表示为多个矩阵,并通过分解获得低维向量表示。神经网络方法结合深度学习技术,通过神经网络自动学习知识图谱中实体和关系的…...

Java集成Sa-Token进行认证与授权

引言 软件开发过程中都必须要有的一个功能,那就是认证与授权,经过大佬们的不断更新迭代,使得如今实现认证与授权功能变得相对简单,也许你并不能真正的接触到认证与授权这一功能,除非你接触的项目是从0到1的&#xff0c…...

【附录】Rust国内镜像设置

目录 前言 (1)设置环境变量 (2)安装Rust (3)设置crates镜像 前言 本节课来介绍下如何在国内高速下载安装Rust和Rust依赖,由于网络原因,我们在安装Rust和下载项目依赖时都很慢&am…...

Rust编程语言代码详细运行、编译方法

以下是针对不同类型的 Rust 代码(以常见的命令行程序为例)详细的运行方法: 前提条件 在运行 Rust 代码之前,确保你已经在系统上安装了 Rust 编程语言环境。如果尚未安装,可以通过以下步骤进行安装: 访问…...

Unity ShaderLab 实现交互地毯

实现思路: 将一个位置坐标值传入到shader的顶点着色器中,和这个值位置相同的顶点沿着法线的y轴方向偏移,然后计算这个值与顶点的距离,在这个范围内的顶点,和凸起的点的位置做插值操作。 Shader Graph实现如下&#x…...

Scala模式匹配——高阶用法

(一)scala的模式匹配 (1)常量 (2)变量 (3)构造器 (4)序列 (5)元组 (6)类型 (7)…...

【简单好抄保姆级教学】javascript调用本地exe程序(谷歌,edge,百度,主流浏览器都可以使用....)

javascript调用本地exe程序 详细操作步骤结果 详细操作步骤 在本地创建一个txt文件依次输入 1.指明所使用注册表编程器版本 Windows Registry Editor Version 5.00这是脚本的第一行,指明了所使用的注册表编辑器版本。这是必需的,以确保脚本能够被正确解…...

C#热更原理与HybridCLR

一、Mono的诞生 在Mono之前,C#虽然很好,但是只在windows家族平台上使用,就这点C#与Java就无法比。于是微软公司向ECMA申请将C#作为一种标准。在2001年12月,ECMA发布了ECMA-334 C#语言规范。C#在2003年成为一个ISO标准(ISO/IEC 23270)。意味着只要你遵守CLI(Common Lang…...

arcgis for js点击聚合要素查询其包含的所有要素

功能说明 上一篇讲了实现聚合效果, 但是点击聚合效果无法获取到该聚合点包含的所有点信息 这一篇是对如何实现该功能的案例 实现 各属性说明需要自行去官网查阅 官网案例 聚合API 没空说废话了, 加班到12点,得休息了, 直接运行代码看效果就行, 相关重点和注意事项都在代码注…...

k8s Init:ImagePullBackOff 的解决方法

kubectl describe po (pod名字) -n kube-system 可查看pod所在的节点信息 例如&#xff1a; kubectl describe po calico-node-2lcxx -n kube-system 执行拉取前先把用到的节点的源换了 sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-EOF {"re…...

HASH256开源代码计算错误问题

计算量超500KB报错 OTA升级中可能会涉及到CRC、hash校验等算法&#xff0c;小编从网上抄到了HASH256的源码&#xff0c;拿来使用的时候却发现了一个问题&#xff0c;当源文件约大于500KB的时候会发现其计算出的hash值出现错误。 经过实际测试得知&#xff0c;当源文件大于约50…...

对象流—ObjectInputStream 和 ObjectOutputStream

对象流(ObjectInputStream和ObjectOutputStream)是Java中用于读写对象的流&#xff0c;可以将对象直接写入到流中&#xff0c;或者从流中读取对象。 ObjectOutputStream将对象序列化为字节流&#xff0c;可以将对象写入文件或网络流中。ObjectInputStream则将字节流反序列化为…...

【Fargo】27:ffmpeg ffprobe 和python分析h264文件并绘制

从帧和包两个层面进行分析。帧级别分析 ffprobe 可以读取264文件信息 -Y9KP MINGW64 /d/XTRANS/thunderbolt/ayame/zhb-bifrost/player-only (main) $ ffprobe test.h264 ffprobe version N-116778-g7e4784e40c-20240827 Copyright (c) 2007-2024 the FFmpeg developersbuilt …...

Debezium Engine监听binlog实现缓存更新与业务解耦

飞书文档 解决缓存与数据源数据不一致的方案有很多, 各有优缺点; 1.0、旁路缓存策略, 直接同步更新 读取流程&#xff1a; 查询缓存。如果缓存命中&#xff0c;则直接返回结果。如果缓存未命中&#xff0c;则查询数据库。将数据库查询到的数据写入缓存&#xff0c;并设置一个…...

mysql_题库详解

1、如何创建和删除数据库&#xff1f; 1&#xff09;创建数据库 CREATE DATABASE 数据库名; 2&#xff09;删除数据库 drop database 数据库名; 2、MyISAM与InnoDB的区别&#xff1f; 1&#xff09;事务&#xff1a;MyISAM 不支持事务 InnoDB 支持 2&#xff09;行锁/表锁&a…...

docker查询是否运行

您可以通过运行以下命令来检查Docker是否正在运行&#xff1a; docker info 或者&#xff1a; docker ps 如果Docker正在运行&#xff0c;docker info将显示Docker的详细信息&#xff0c;而docker ps将列出当前运行的容器。如果Docker没有运行&#xff0c;这些命令将会返回错误…...

【AI日记】24.11.29 kaggle 比赛 Titanic-2 | 鼓励自己

【AI论文解读】【AI知识点】【AI小项目】【AI战略思考】【AI日记】 核心工作 内容&#xff1a;学习 kaggle 入门比赛 Titanic - Machine Learning from Disaster&#xff0c;学习机器学习课程备注&#xff1a;入门比赛有很多 notebook 适合我这种新手学习&#xff0c;尤其是那…...

SVG无功补偿装置MATLAB仿真模型

“电气仔推送”获得资料&#xff08;专享优惠&#xff09; 模型简介 SVG&#xff08;又称ASVG 或STATCOM&#xff09;是Static Var Generator 的缩写&#xff0c;叫做静止无功发生器。也是做无功补偿的&#xff0c;比SVC 更加先进。其基本原理是将自换相桥式电路通过电抗器或…...

2039:【例5.6】冒泡排序

【题目描述】 编程输入n(1≤n≤20)个小于1000非负整数&#xff0c;然后自动按从大到小的顺序输出。&#xff08;冒泡排序&#xff09; 【输入】 第一行&#xff0c;数的个数n; 第二行&#xff0c;n个非负整数。 【输出】 由大到小的n个非负整数&#xff0c;每个数占一行。 【输…...

yum源问题的解决方案

linux课堂作业 问题描述 yum 直接安装tree的问题截图 这个错误表明你的系统没有正确注册到 Red Hat Subscription Management&#xff08;这个问题不用管&#xff09;&#xff0c;也没有配置有效的 YUM 软件仓库&#xff0c;因此无法安装或更新软件包。 解决方案&#xff08…...

一文解析Kettle开源ETL工具!

ETL&#xff08;Extract, Transform, Load&#xff09;工具是用于数据抽取、转换和加载的软件工具&#xff0c;用于支持数据仓库和数据集成过程。Kettle作为传统的ETL工具备受用户推崇。本文就来详细说下Kettle。 一、Kettle是什么&#xff1f; Kettle 是一款开源的 ETL&#x…...

微积分复习笔记 Calculus Volume 2 - 3.1

The first 2 chapters of volume 2 are the same as those in volume 1. Started with Chapter 3. 3.1 Integration by Parts - Calculus Volume 2 | OpenStax...

linux环境搭建

1、**连接外网** ssh在192.168.4.x上运行sudo ip link set ens160 down ssh切换到192.168.3.x(外网ip)&#xff0c;运行sudo ip route add default via 192.168.2.1 dev ens192 onlink //连接外网 使用完外网后 ssh在192.168.3.x上运行sudo ip link set ens160 up ssh在1…...

黑马程序员Java笔记整理(day05)

1.面向对象编程 2.用法 3.对象是什么 4.对象在计算机中是啥 5.无参与有参构造器 小结: 6.this的作用 7.小结 8.封装 9.小结 10.实体类 11.小结 12.static 13.小结 14.static修饰方法 15.static应用前景 16.几个注意事项 17.java中可以直接用类的名字创建数组&#xff0c;如: M…...

DM达梦管理工具拖出空白区块,无法关闭

1. 出现问题&#xff1a;DM达梦管理工具拖出空白区块&#xff0c;无法关闭。 2. 解决方法 新建查询页&#xff0c;把查询页拖到空白区块里&#xff0c;完全覆盖空白区块。之后空白区块会变成查询页&#xff0c;右上角会出现叉号&#xff0c;点击叉号关闭就行。 3. 后记 达梦…...

Linux系统 异常控制流

文章目录 前言异常1. **中断&#xff08;interrupt&#xff09;**2. **陷阱和系统调用&#xff08;trap&#xff09;**3. **故障&#xff08;fault&#xff09;**4. **终止&#xff08;abort&#xff09;** 进程与信号非本地跳转 前言 下面内容大部分来自《深入理解计算机系统…...

Linux环境下配置neo4j图数据库

1.下载安装包 openjdk-11.0.1_linux-x64_bin.tar.gz neo4j-community-4.2.19-unix.tar.gz 2.之前配置好的配置文件 neo4j.conf 3.安装 3.1-jdk11的安装&#xff08;jdk1.8不够用&#xff09; 解压缩 tar -zxvf openjdk-11.0.1_linux-x64_bin.tar.gz修改系统环境变量 打开pro…...

python打包深度学习虚拟环境

今天师兄让我把环境打包发给他&#xff0c;我才知道可以直接打包深度学习虚拟环境&#xff0c;这样另一个人就不用辛辛苦苦的去装环境了&#xff0c;我们都知道有些论文他需要的环境很难装上。比如装Apex&#xff0c;装 DCN&#xff0c;mmcv-full 我现在把3090机子上的ppft虚拟…...

关于IDE的相关知识之一【使用技巧】

成长路上不孤单&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a; 【14后&#x1f60a;///C爱好者&#x1f60a;///持续分享所学&#x1f60a;///如有需要欢迎收藏转发///&#x1f60a;】 今日分享关于ide使用技巧的相关内容&#xff01; 关于…...

Redis开发03:常见的Redis命令

1.输入以下命令&#xff0c;启动redis。 sudo service redis-server start 如果你是直接安装在WSL的&#xff0c;搜索栏搜索Ubuntu或者点击左下角Windows图表找到U那一栏&#xff0c;直接打开Ubentu&#xff0c;输入账密后&#xff0c;输入“sudo service redis-server start”…...

[OS] A4-前菜介绍

从你的描述来看&#xff0c;这段话是给你的一些 预备知识 和 mkfs工具的使用 提示&#xff0c;帮助你了解如何构建和管理文件系统&#xff0c;特别是关于 xv6 文件系统的一些基本操作。 我会通过比喻和通俗化的方式逐步解释&#xff1a; 预备知识&#xff1a;xv6 文件系统的基…...

2024农历年余下的数模比赛名单已出炉!

数学建模比赛季又来了&#xff01;作为一名资深的数学建模辅导老师&#xff0c;我想对你们说&#xff1a;这不仅是挑战智商的时候&#xff0c;也是展现团队合作力、数据分析能力和逻辑思维的最佳舞台&#xff01;&#x1f4a1; 如果你是建模新手&#xff0c;或者想让自己的比赛…...

在开发环境中,前端(手机端),后端(电脑端),那么应该如何设置iisExpress

首先&#xff0c;要想手机端应用能成功请求后端&#xff0c;两个设备至少需在同一个局域网内&#xff0c;且IP地址互通&#xff1b; 因为ajax是http(s)://IP地址端口号的方式请求&#xff0c;但是iisExpress默认是localhost如何解决&#xff0c;并没有IP地址&#xff0c;所以手…...

2.安装docker、docker compose

1. 安装依赖包 yum install -y yum-utils device-mapper-persistent-data lvm22. 设置阿里云docker-ce镜像源 yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo3. docker-ce 安装 yum install -y docker-ce4. docker-compo…...

windows中idea选择bash作为控制台指令集,但是系统环境变量未在其中生效处理

1. 引言 在windows系统中安装node 以及npm时配置其环境&#xff0c;使用window环境变量的配置方式在系统环境变量设置的地方设置了环境变量如下图1-1&#xff0c;设置后在idea中的控制台通过 echo $PATH 查看环境变量发先跟系统中配置的不一致&#xff0c;而且node -v npm -v指…...

如何通过 ADB 安装 xapk

Android开发这么久,今天发现还能这么操作!😂 记录通过ADB安装xapk、apks的两种方式: 1.ADB命令安装使用APK-Splits技术分包的应用程序 这位大佬的方式步骤较为繁琐,不过兼容性应该较好,亲测成功安装。 2.How to install xapk, apks, or multiple-apks via adb? 这个…...

Docker使用教程

Docker 是一个开源的容器化平台&#xff0c;用于开发、打包和分发应用程序。它允许将应用及其依赖环境打包成容器&#xff0c;从而实现跨平台的便捷部署。下面是一个简单的 Docker 使用教程&#xff0c;涵盖从安装到基本命令的使用。 1. 安装 Docker Windows / MacOS 访问 D…...

我的创作纪念日

一、机缘 成为创作者的初衷是从学习C/C语法与数据结构过程中获得的灵感。在日常学习和项目实践中&#xff0c;我发现这些知识既丰富又复杂&#xff0c;对初学者而言尤为困难。因此&#xff0c;我决定通过博客记录自己的学习过程、解决思路以及代码实现&#xff0c;帮助更多人在…...

软件质量保证——单元测试之白盒技术

笔记内容及图片整理自XJTUSE “软件质量保证” 课程ppt&#xff0c;仅供学习交流使用&#xff0c;谢谢。 程序图 程序图定义 程序图P&#xff08;V,E&#xff09;&#xff0c;V是节点的集合&#xff08;节点是程序中的语句或语句片段&#xff09;&#xff0c;E是有向边的集合…...

redis中的哨兵

redis中的哨兵 一、哨兵机制的概念二、redis哨兵的部署2.1 docker的安装2.2 编排redis主从节点2.3 配置哨兵节点 三、redis哨兵的选举机制3.1 redis-master宕机之后的情况3.2 重启redis-master后的情况 四、redis哨兵机制的原理4.1主观下线4.2客观下线4.3选举leader节点4.4选出…...

开源对象存储新选择:在Docker上部署MinIO并实现远程管理

文章目录 前言1. Docker 部署MinIO2. 本地访问MinIO3. Linux安装Cpolar4. 配置MinIO公网地址5. 远程访问MinIO管理界面6. 固定MinIO公网地址 前言 MinIO是一个开源的对象存储服务器&#xff0c;可以在各种环境中运行&#xff0c;例如本地、Docker容器、Kubernetes集群等。它兼…...

15分钟做完一个小程序,腾讯这个工具有点东西

我记得很久之前&#xff0c;我们都在讲什么低代码/无代码平台&#xff0c;这个概念很久了&#xff0c;但是&#xff0c;一直没有很好的落地&#xff0c;整体的效果也不算好。 自从去年 ChatGPT 这类大模型大火以来&#xff0c;各大科技公司也都推出了很多 AI 代码助手&#xff…...

houdini肌肉刷pin点的方法

目标&#xff1a;产生gluetoanimation这个属性 主要节点&#xff1a;attribute paint(或者muscle paint) 步骤1&#xff1a; 导入肌肉资产 导入的是rest shape的肌肉 在有侧边栏可以打开display group and attribute list&#xff0c;方便查看group。不同的肌肉块按照muscl…...

Ubuntu20.04安装NVIDIA显卡驱动

Ubuntu20.04安装NVIDIA显卡驱动 参考资料&#xff1a;https://blog.csdn.net/weixin_39244242/article/details/136282614?fromshareblogdetail&sharetypeblogdetail&sharerId136282614&sharereferPC&sharesourceqq_37397652&sharefromfrom_link 成功配置…...

k8s删除网络组件错误

k8s集群删除calico网络组件重新部署flannel网络组件&#xff0c;再部署pod后出现报错不能分配ip地址 plugin type"calico" failed (add): error getting ClusterInformation: connection is unauthorized: Unauthorized 出现该问题是因为删除网络组件后&#xff0c;网…...

民锋视角:多元化策略实现资产稳健增长

在全球化经济的推动下&#xff0c;市场呈现出高度的复杂性与多样性。面对不同经济周期和市场动态&#xff0c;民锋以多元化投资策略为核心&#xff0c;帮助投资者在不确定性中实现资产的稳健增长。 一、多元化策略的核心价值 降低单一市场风险 单一资产或市场的表现可能因不可…...

[已解决]Visual Studio 2022中如何同时打开多个项目多个独立窗口

同时运行两个VS2022程序&#xff0c;即点击运行Visual Studio 2022.exe后&#xff0c;再点击运行一次运行Visual Studio 2022.exe&#xff0c;效果如图...

11、PyTorch中如何进行向量微分、矩阵微分与计算雅克比行列式

文章目录 1. Jacobian matrix2. python 代码 1. Jacobian matrix 计算 f ( x ) [ f 1 x 1 2 2 x 2 f 2 3 x 1 4 x 2 2 ] , J [ ∂ f 1 ∂ x 1 ∂ f 1 ∂ x 2 ∂ f 2 ∂ x 1 ∂ f 2 ∂ x 2 ] [ 2 x 1 2 3 8 x 2 ] \begin{equation} f(x)\begin{bmatrix} f_1x_1^22x_2\\…...

51c自动驾驶~合集35

我自己的原文哦~ https://blog.51cto.com/whaosoft/12206500 #纯视觉方案的智驾在大雾天还能用吗&#xff1f; 碰上大雾天气&#xff0c;纯视觉方案是如何识别车辆和障碍物的呢&#xff1f; 如果真的是纯纯的&#xff0c;特头铁的那种纯视觉方案的话。 可以简单粗暴的理解为…...

位图和布隆过滤器

目录 一.位图 1.位图的概念 2.位图的实现 3.位图的应用 二.布隆过滤器 1.布隆过滤器的概念 2.布隆过滤器的实现 3.布隆过滤器的优缺点 三.整体代码 1.bitset.h 2.BloomFilter 3.Hash.cpp 一.位图 1.位图的概念 1.面试题 给40亿个不重复的无符号整数&#xff0c;没…...