超图嵌入论文阅读1:对偶机制非均匀超网络嵌入

超图嵌入论文阅读1:对偶机制非均匀超网络嵌入

原文:Nonuniform Hyper-Network Embedding with Dual Mechanism ——TOIS(一区 CCF-A)

背景

超边:每条边可以连接不确定数量的顶点

我们关注超网络的两个属性:非均匀对偶属性

贡献

  1. 提出了一种称为 Hyper2vec 的灵活模型,通过在 Skip-gram 框架下对超网络应用有偏二阶随机游走策略来学习超网络的嵌入;
  2. 通过对偶超网络来构建进一步的模型来组合超边的特征,称为NHNE,基于一维卷积神经网络。训练了一个元组相似函数来建模非均匀关系。

扩展

现状

  • 很少有网络嵌入方法可以直接应用于超网络——无法直接推广

  • 传统方法是将它们转换为正常网络:团扩展、星扩展——显式或隐式导致原始超网络的信息丢失

    如:团扩展将所有超边平均转换为正常边,这改变了顶点之间的关系,丢失了超边的信息。因为元组关系所暗示的所有可能的边都被平等对待,并且不再存在元组关系

  • 到2020年为止,只有几种超网络嵌入方法被提出,主要是为具有特定属性(如均匀性和不可分解性)的超网络设计的,因此不能提高在广泛的超网络上的性能。——当前其他方法泛化能力差

本工作对超网络的独特观察

  1. 非均匀:超网络中的超边通常是不均匀的——需要具有可变长度输入的函数来预测包含不同数量的顶点的超边
  2. 对偶性:超图的对偶网络具有显着的含义——可以用来捕获超边的高阶邻近度和结构属性等(原始超网络建模中可能丢失)

评估实验:链接预测、顶点分类

相关工作

传统图嵌入

  • 经典的网络嵌入方法:LLE拉普拉斯特征映射IsoMap

  • 随机游走嵌入方法(基于Skip-gram思想):DeepWalk(一阶游走)、Node2vec(二阶游走)

  • 大规模网络嵌入方法:LINE(保留一阶和二阶邻近性)、SDNESDAESiNE(深度网络学习顶点嵌入)

  • 邻域聚合编码器:依赖于顶点的特征和属性、很难应用于无监督任务

超图嵌入

  • 基于谱聚类技术:谱聚类假设图割对分类有用——泛化能力差。

  • 均匀超图嵌入:异构超图嵌入(HHE)、超图嵌入(HGE)、深度超网络嵌入(DHNE)和异构超网络嵌入(HHNE)

    • HHE通过求解与超网络拉普拉斯矩阵相关的特征向量问题来学习嵌入,但它既费时又耗空间。
    • HGE通过将多路关系合并到与几何均值和算术平均值相关的优化问题中来学习嵌入,但它不灵活,无法很好地捕获非均匀超网络的特征。
    • DHNE是一种基于神经网络的超网络嵌入模型,但它仅适用于具有高不可分解超边的统一异构超网络。
    • HHNE利用图卷积网络来学习顶点的嵌入,但它依赖于顶点的特征,在无监督环境下很难应用于分类任务。
  • 二分(星形)扩展嵌入:多用于推荐——二分网络嵌入 (BiNE)等,其他异质图方法也可以,但针对性不强。

模型

  1. 在超网络中进行随机游走来捕获顶点的高阶接近度。

    • 为超网络建立了一个基本的概率模型,然后使用二阶随机游走在深度优先搜索 (DFS) 和广度优先搜索 (BFS) 之间平滑插值
    • 引入了一种程度偏差随机游走机制来纠正负偏差或为随机游走引入正偏差
  2. 引入了对偶超网络挖掘策略,设计了一个神经网络模型来组合原始超网络和双超网络的特征,同时训练一个元组相似度函数来评估超网络中的非均匀关系。

随机游走

一阶:定义一个顶点到其邻居的转移概率

  • 对于当前顶点 v,我们首先根据 e 的权重随机选择一个与 v 关联的超边 e,然后选择一个顶点 x ∈ e 作为随机游走的下一个顶点。最终形成超路径。

  • 转移概率如下:
    π 1 ( x ∣ v ) = ∑ e ∈ E w ( e ) h ( v , e ) d ( v ) h ( x , e ) δ ( e ) . \pi_1(x|v)=\sum_{e \in E} w(e)\frac{h(v,e)}{d(v)} \frac{h(x,e)}{\delta(e)}. π1(xv)=eEw(e)d(v)h(v,e)δ(e)h(x,e).

二阶:嵌入时平衡同质性和结构等价

——不仅根据当前顶点 v, 还根据**前一个顶点 u **移动到下一个顶点 x

——通过使用两个参数 p 和 q 在超网络中引入了二阶随机游走策略

  • 当前顶点v的邻居分为三部分:前一个顶点 u、u 的邻居、其他顶点。

  • 二阶搜索偏差 α (·) 定义如下:
    α ( x ∣ v , u ) = { 1 p , if  x = u 1 , if  ∃ e ∈ E , x ∈ e , u ∈ e 1 q , others , \alpha(x|v,u)= \left\{ \begin{array}{l} \frac{1}{p},\space &\text{if} \space x = u \\ 1, \space &\text{if} \space \exist e \in E,x \in e,u \in e \\ \frac{1}{q}, \space &\text{others} \end{array} \right. , α(xv,u)= p1, 1, q1, if x=uif eE,xe,ueothers,
    其中 p 是返回参数,它控制立即重新访问路径中前一个顶点 u 的可能性,q 是内部参数,它控制步行者探索远处还是近处的顶点。因此,二阶随机游走模型的非归一化转移概率可以表示为:
    π 2 ( x ∣ v , u ) = α ( x ∣ v , u ) π 1 ( x ∣ v ) \pi_2(x|v,u)=\alpha(x|v,u)\pi_1(x|v) π2(xv,u)=α(xv,u)π1(xv)

    • q < min (p, 1)时,更倾向于访问远离u的顶点——DFS,鼓励进一步探索
    • p < min (q, 1)或1 < min (p, q) 时,倾向于访问前一个顶点 u 或靠近u 的顶点——BFS,局部视图

有偏随机游走

基于度的有偏随机游走:——问题:DFS 和 BFS 搜索策略将引入特定的负偏差

  • 正随机游走的负偏差是有价值的
  • 引入一些正偏差来捕获网络的某些特定特征或平衡顶点的更新机会也是有帮助的

——基于二阶模型,我们无法控制选择更大度或更小度的顶点。因此提出了度有偏随机游走模型

  1. Big-Degree Biased Search (BDBS): 倾向于选择度数较大的邻居作为下一个顶点
  2. Small-Degree Biased Search (SDBS): 倾向于选择度数较小的邻居作为下一个顶点

可以看出BDBS 引导随机游走到(局部)中心,SDBS 引导随机游走到边界

——引入了一个基于 x 度的偏差系数 β ( x ) β (x) β(x),参数为 r。关键是使用 r 来控制两者之间的系数率
β ( x ) = d ( x ) + r ( r > 0 ) \beta (x)=d(x)+r \space(r>0) β(x)=d(x)+r (r>0)
顶点 x1 和 x2 的偏置系数率计算如下:
β ( x 1 ) β ( x 2 ) = d ( x 1 ) + r d ( x 2 ) + r ( r > 0 ) \frac{\beta(x_1)}{\beta(x_2)}=\frac{d(x_1)+r}{d(x_2)+r} \space (r>0) β(x2)β(x1)=d(x2)+rd(x1)+r (r>0)
显然, β ( x ) β (x ) β(x) d ( x ) d (x ) d(x) 线性增长,随着 r 的增加,偏差系数率 β ( x 1 ) / β ( x 2 ) β (x1)/β (x2) β(x1)/β(x2) d ( x 1 ) / d ( x 2 ) d (x1)/d (x2) d(x1)/d(x2) 平滑,这意味着 BDBS 趋势的程度下降。

SDBS (r < 0) 的策略可以类似于 BDBS。将r的不同情况组合在一起,最终公式如下:
β ( x ) = { d ( x ) + r , r > 0 1 d ( x ) − r , r < 0 1 , r = 0 . \beta(x)= \left\{ \begin{array}{l} d(x)+r,\space &r>0 \\ \frac{1}{d(x)-r}, \space &r<0 \\ 1, \space &r=0 \end{array} \right. . β(x)= d(x)+r, d(x)r1, 1, r>0r<0r=0.
结合之前的随机游走模型,最终转移概率 p 2 ′ ( x ∣ v , u ) p^′_2 (x |v, u) p2(xv,u) 定义如下:
p 2 ′ ( x ∣ v , u ) = α ( x ∣ v , u ) ⋅ β ( x ) ⋅ ∑ e ∈ E w ( e ) h ( v , e ) d ( v ) h ( x , e ) δ ( e ) Z p^′_2 (x|v, u)=\frac{\alpha(x|v,u) \cdot \beta(x) \cdot \sum_{e \in E} w(e)\frac{h(v,e)}{d(v)} \frac{h(x,e)}{\delta(e)}}{Z} p2(xv,u)=Zα(xv,u)β(x)eEw(e)d(v)h(v,e)δ(e)h(x,e)
其中 α ( ⋅ ) α (·) α() 是二阶搜索偏差, Z Z Z 是归一化因子。基于转移概率 p 2 ′ ( x ∣ v , u ) p^′_2 (x|v, u) p2(xv,u),我们可以在超网络中采样一系列顶点。

Hyper2vec算法

三部分:预处理过程、随机游走生成器、更新过程

  1. 预处理过程:处理超网络

    • 基于一阶随机游走模型生成概率矩阵 P
    • 二阶随机游走模型中由参数 p 和 q 指导概率矩阵调整
    • 有偏差随机游走模型中由参数 r 指导游走偏差,进一步调整P
  2. 随机游走生成器:生成一组随机游走

    ——修改后的转移概率在预处理过程中预先计算,使用别名采样(alias sample)在 O (1) 时间内有效地完成随机游走的每一步

  3. 更新过程:通过 Skip-gram 模型生成最终的嵌入结果

    ——Skip-gram是一种语言模型,它最大化句子中彼此接近的单词之间的共现概率(此处为随机游走路径)

    f : V → R d f : V → \mathbb R^d f:VRd 是从顶点到嵌入的中心映射函数, f ′ : V → R d f^′ : V → \mathbb R^d f:VRd 是一个上下文映射函数, C ( v ) C (v) C(v) 是 v 的上下文,我们模型的 Skip-gram 的优化问题公式如下:
    max ⁡ f ∑ v ∈ V ( ∑ c i ∈ C ( v ) ( f ( v ) ⋅ f ′ ( c i ) − l o g ∑ u ∈ V e f ( v ) ⋅ f ′ ( u ) ) ) \max_f \sum_{v \in V} \left( \sum_{c_i \in C(v)} \left(f(v) \cdot f'(c_i)-log \sum_{u \in V} e^{f(v) \cdot f'(u)} \right) \right) fmaxvV ciC(v)(f(v)f(ci)loguVef(v)f(u))

复杂度分析:

  • 计算概率矩阵 P 的时间复杂度为 O ( a n ) O (an) O(an),其中 n 是顶点的数量,a 是每个顶点的平均邻居数(对于现实世界的网络来说通常很小);
  • 对于有偏的二阶随机游走过程,存储每个顶点的邻居之间的互连很有用,最终时间复杂度为 O ( a 2 n ) O (a^2n) O(a2n)
  • 随机游走过程花费 O ( t l n ) O (tln) O(tln) 时间,其中 t 是每个顶点的游走次数,l 是游走长度。
算法 1:Hyper2vec 算法
Input:超图 G = ( V , E , w ) G = (V , E, w ) G=(V,E,w)、嵌入大小 d、窗口大小 k、行走次数 t、行走长度 l、返回参数 p、in-out 参数 q、偏置参数 r ;
Output:顶点表示矩阵 $\Phi \in \mathbb R^{
初始化游走为空;
根据等式(1)计算转移概率矩阵 $P \in \mathbb R^{
for u ∈ V u \in V uV do
——for v ∈ N G ( u ) v \in N_G (u) vNG(u) do
———— Π ⋅ u v ′ = β ( v ) ⋅ P u v \Pi'_{\cdot uv}=\beta(v) \cdot P_{uv} Πuv=β(v)Puv;
————for x ∈ N G ( v ) x \in N_G (v) xNG(v) do
——————$\Pi’_{uvx}=\alpha(x
for i from 1 to t do
——for v ∈ V v \in V vV do
———— w a l k = RandomWalk ( G , Π ′ , v , l ) walk = \text{RandomWalk}(G, \Pi', v, l) walk=RandomWalk(G,Π,v,l);
————把生成的游走序列 walk 添加到 walks 列表;
Φ = Skip-gram ( k , d , w a l k s ) \Phi=\text{Skip-gram}(k, d, walks) Φ=Skip-gram(k,d,walks);
Function w a l k = RandomWalk ( G , Π ′ , v , l ) walk = \text{RandomWalk}(G, \Pi', v, l) walk=RandomWalk(G,Π,v,l)
——游走序列 walk 初始化为[s];
——前一个节点 u 初始化为null
——for i from 2 to l l l do
———— v = v= v= 游走序列walk的最后一个节点;
———— x = AliasSample ( N G ( v ) , Π ′ u v ) ; x = \text{AliasSample}(N_G (v), \Pi′_{uv} ); x=AliasSample(NG(v),Πuv); (别名采样算法)
————把节点x添加到游走序列 walk中;
———— u = v u=v u=v;
——return walk;

NHNE:对偶机制非均匀超网络嵌入

  • 之前的研究只捕获了超边自己连接有哪些节点的信息(低阶信息),更详细的边缘特征(例如交互活动)可用于提高网络嵌入模型的性能;
  • 本文的超网络中超边具有特别含义:文章等。使用有偏的二阶随机游走来保留顶点的高阶接近度和结构属性。

核心思想

反转顶点和超边的定义以构建对偶超网络,使用上面的相同策略来生成对偶随机游走

  • 对偶超网络节点的嵌入对应于原始网络边的嵌入

  • 计算与 v 关联的超边的平均嵌入获得节点的嵌入。

    ——使用 f ∗ ( v ) f^∗ (v) f(v) 来表示从对偶超网络中学习到的 v 的嵌入:(加权平均)
    f ∗ ( v ) = 1 ∑ e ∈ E G ( v ) w ( e ) ∑ e ∈ E G ( v ) w ( e ) ⋅ f ( e ) , f^*(v)=\frac{1}{\sum_{e\in E_G(v)}w(e)}\sum_{e\in E_G(v)}w(e)\cdot f(e), f(v)=eEG(v)w(e)1eEG(v)w(e)f(e),
    其中 f ( e ) f (e) f(e) 是从对偶超网络中学习到的超边 e 的嵌入, E G ( v ) E_G (v) EG(v) 是与 v 关联的超边集。对偶模型的过程可以与原始模型同时进行。

——从原始超网络和对偶生成的嵌入是互补的

NHNE框架

NHNE

  1. 输入层:首先对超边(顶点集)进行编码

    • 使用集合中顶点的 one-hot 编码作为超边的编码: X e = R n × z X_e=\mathbb R^{n\times z} Xe=Rn×z(n 是顶点的数量,z 是最大边度)
    • 列向量是顶点的顺序,当 δ ( e ) < z δ (e) < z δ(e)<z 时,补充零向量
  2. 嵌入层

    • 结合嵌入层的权重, W ( e m b ) X e ∈ R d × z W^{(emb)}X_e \in \mathbb R^{d \times z} W(emb)XeRd×z 是超边 e 的初始矩阵表示
    • 我们使用 Hyper2vec(原始和对偶)学习的嵌入作为嵌入层的初始权重
  3. 网络层

    ——超网络通常是不均匀的(度不固定),超边可以看作是一个顶点序列,但顶点的顺序没有意义

    • 使用一维cnn(1D-CNN)模型,表示为 c ( ⋅ ) c (\cdot) c(), 由 1D 卷积层和最大池化层组成,输入 W ( e m b ) X e ∈ R d × z W^{(emb)}X_e \in \mathbb R^{d \times z} W(emb)XeRd×z,输出维度为 d 的 e 的潜在向量表示;
    1. 使用两个一维cnn分别捕获原始超网络和对偶超网络的隐藏信息

    2. 将它们连接为输出相似度层的输入

    3. 元组相似度函数 S (·) 定义如下:
      S ( e ) = σ ( W ( o u t ) [ c o ( W o ( e m b ) X e ) ; c d ( W d ( e m b ) X e ) ] + b ) , S(e)=\sigma(W^{(out)}[c_o( W_o^{(emb)}X_e);c_d(W^{(emb )}_dX_e)]+b), S(e)=σ(W(out)[co(Wo(emb)Xe);cd(Wd(emb)Xe)]+b),
      其中 σ ( ⋅ ) σ (·) σ() 是 sigmoid 函数;$ W_o^{(emb)}$ 和 W d ( e m b ) W^{(emb )}_d Wd(emb) 分别表示原始嵌入层和对偶嵌入层的权重; c o ( ⋅ ) co (·) co() c d ( ⋅ ) cd (·) cd() 分别表示原始和对偶1D-CNN; W ( o u t ) W^{(out)} W(out) 表示输出相似度层的权重; b 是偏差。

      损失函数定义如下:
      L = 1 ∣ E ∣ ∑ e ∈ E ( − log ⁡ S ( e ) + ∑ e n ∈ E n log ⁡ S ( e n ) ) \mathcal L=\frac{1}{|E|} \sum_{e\in E} \left(-\log S(e)+\sum_{e_n\in E_n}\log S(e_n)\right) L=E1eE(logS(e)+enEnlogS(en))
      其中 E n E_n En 是 e 的负样本。对于每个 e n ∈ E n e_n \in E_n enEn e n ∉ E e_n \notin E en/E ∣ e n ∣ = ∣ e ∣ |e_n | = |e | en=e

    ——使用RMSProp训练模型参数

  4. 输出层:输出相似度层

    结合嵌入层的节点嵌入,输出一个新的节点嵌入,同时输出一个元组相似度函数来评估顶点的元组关系。

    与 Hyper2vec 学习的嵌入相比,NHNE 更新的嵌入包含更多关于顶点之间元组关系的特征

实验

链接预测和顶点分类两个任务

数据集:

  • DBLP(合著)7,995 个顶点(作者)和 18,364 个超边(出版物)
  • IMDb(参演) 4,423 个顶点(演员)和 4,433 个超边(电影)

实验设置

Hyper2vec 和 NHNE 在两个学习任务上的性能,与以下算法进行对比:

  • 传统的成对网络嵌入方法:DeepWalk、Node2vec、LINE、AROPE、Metapath2vec——团扩展
  • 二分网络嵌入:BiNE——星形扩展
  • 超网络嵌入:HHE、HGE——(针对均匀超网络)将空顶点填充到度数小于最大度数的超边

对于所有方法,我们将嵌入大小统一设置为32。实验重复了五次。(具体各算法参数见原文)

链接预测

删除了部分边,任务是根据结果网络预测这些删除的边

顶点相似度:L1/L2距离、余弦相似度

设置

  • DBLP:随机删除 50% 的现有超边作为正测试样本,生成相同数量的负样本(随机选择顶点,若不是超边则保留)

  • IMDB:随机删除30%

——评估AUC的大小

结果

  • Hyper2vec 优于所有基线
  • NHNE 具有令人印象深刻的性能提升(原始模型和对偶模型生成的嵌入是互补的)
  • BiNE、HHE 和 HGE 在链接预测任务上表现不佳

顶点分类

大多数情况下为多标签分类

设置

按照作者/演员最多发表/参演的类型来打标签,删除一些频率非常小的类型。

逻辑回归用作外部分类器

使用Micro-F1 和 Macro-F1 来评估模型性能

结果

  • 我们的观察结果与链接预测的结果基本一致
  • Hyper2vec 在分类任务上优于所有基线
  • NHNE 具有令人印象深刻的性能提升
  • BiNE、HHE 和 HGE 在分类任务上表现不佳

参数敏感性

对于一阶随机游走模型,最重要的一点是确保模型经过充分训练并选择适当的窗口大小

对于二阶随机游走模型,具有 DFS 趋势的随机游走在所有任务和数据集上表现更好

偏差参数 r :DBLP 超网络不需要太多度的偏差趋势,IMDb 超网络设置 r = 4

——虽然参数设置是最优的,但 Hyper2vec 无法达到 NHNE 的性能

——这意味着原始超网络没有捕获所有信息,对偶超网络提供了与原始超网络互补的信息

权重初始化的效果(略)

总结

提出了一种名为 Hyper2vec 的灵活模型来学习超网络的嵌入

  • 引入了有偏的二阶随机游走策略
  • 使用Skip-gram 框架进行嵌入

将对偶超网络中的超边特征结合起来构建一个名为 NHNE 的基于 1D-CNN 的模型

  • 该模型有显着的改进,并在不同的任务击败了所有最先进的模型

未来工作

参数、预测任务和超参数结构之间的更深层次的关系

更智能的参数调整机制

动态调整偏差以捕获局部属性

其他偏差指标:局部聚类系数等

更多超网络的信息:顶点和超边的属性

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

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

相关文章

打破数据孤岛!时序数据库 TDengine 与创意物联感知平台完成兼容性互认

新型物联网实现良好建设的第一要务就是打破信息孤岛&#xff0c;将数据汇聚在平台统一处理&#xff0c;实现数据共享&#xff0c;放大物联终端的行业价值&#xff0c;实现系统开放性&#xff0c;以此营造丰富的行业应用环境。在此背景下&#xff0c;物联感知平台应运而生&#…

计算机毕业设计 校园二手交易平台 Vue+SpringBoot+MySQL

作者主页&#xff1a;Designer 小郑 作者简介&#xff1a;Java全栈软件工程师一枚&#xff0c;来自浙江宁波&#xff0c;负责开发管理公司OA项目&#xff0c;专注软件前后端开发、系统定制、远程技术指导。CSDN学院、蓝桥云课认证讲师&#xff0c;全栈领域优质创作者。 项目内容…

uni-app之android离线自定义基座

一 为什么要自定义基座 1&#xff0c;基座其实就是一个app&#xff0c;然后新开发的页面可以直接在手机上面显示&#xff0c;查看效果。 2&#xff0c;默认的基座就是uniapp帮我们打包好的基座app&#xff0c;然后我们可以进行页面的调试。 3&#xff0c;自定义基座主要用来…

【MySQL】4、MySQL备份与恢复

备份的主要目的是灾难恢复&#xff0c;备份还可以测试应用、回滚数据修改、查询历史数据、审计等 MySQL日志管理 MySQL 的日志默认保存位置为 /usr/local/mysql/data #配置文件 vim /etc/my.cnf 日志的分类 常见日志有&#xff1a; 错误日志&#xff0c;一般查询日志&…

Windows下Redis的安装和配置

文章目录 一,Redis介绍二,Redis下载三,Redis安装-解压四,Redis配置五,Redis启动和关闭(通过terminal操作)六,Redis连接七,Redis使用 一,Redis介绍 远程字典服务,一个开源的,键值对形式的在线服务框架,值支持多数据结构,本文介绍windows下Redis的安装,配置相关,官网默认下载的是…

SpringCloud(十)——ElasticSearch简单了解(三)数据聚合和自动补全

文章目录 1. 数据聚合1.1 聚合介绍1.2 Bucket 聚合1.3 Metrics 聚合1.4 使用 RestClient 进行聚合 2. 自动补全2.1 安装补全包2.2 自定义分词器2.3 自动补全查询2.4 拼音自动补全查询2.5 RestClient 实现自动补全2.5.1 建立索引2.5.2 修改数据定义2.5.3 补全查询2.5.4 解析结果…

XML—DTD、 Schema

目录 DTD是什么&#xff1f; DTD有什么用途&#xff1f; DTD与XML有什么联系&#xff1f; DTD原理图 外部DTD DTD文件book.dtd: 使用外部DTD文件的XML文件 PCDATA XML 文档构建模块 一、元素 1、元素声明 ①、有元素&#xff1a; ②、空元素&#xff1a; ③、ANY…

ArcGIS将两个相同范围但不同比例或位置的矢量数据移动到相同位置

有两个市图层&#xff0c;一个是正确经纬度的市行政范围图层&#xff0c;另一个是其他软件导出获取的不正确经纬度信息或缺失信息。 如果单纯的依靠移动图层&#xff0c;使不正确的移动到正确位置需要很久。尝试定义投影等也不能解决。 使用ArcMap 的空间校正工具条&#xff…

单片机-控制按键点亮LED灯

1、按键电路图 定义四个按键引脚 1、按键按下 为 输入为低电平 2、按键不按下 IO有上拉电阻&#xff0c;为高电平 // 定义 按键的 管教 sbit KEY1 P3^1; sbit KEY2 P3^0; sbit KEY3 P3^2; sbit KEY4 P3^3; 2、LED灯电路图 LED 输出高电平为亮 // 定义LED灯 管教 sbit LED1…

jmeter 性能测试工具的使用(Web性能测试)

1、下载 该软件不用安装&#xff0c;直接解压打开即可使用。 2、使用 这里就在win下进行&#xff0c;图形界面较为方便   在目录apache-jmeter-2.13\bin 下可以见到一个jmeter.bat文件&#xff0c;双击此文件&#xff0c;即看到JMeter控制面板。主界面如下&#xff1a; 3、创…

色温曲线坐标轴的选取:G/R、G/B还是R/G、B/G ?

海思色温曲线坐标 Mstar色温曲线坐标 高通色温曲线坐标 联咏色温曲线坐标 查看各家白平衡调试界面&#xff0c;比如海思、Mstart、高通等调试资料&#xff0c;白平衡模块都是以R/G B/G作为坐标系的两个坐标轴&#xff0c;也有方案是以G/R G/B作为坐标系的两个坐标轴。 以G/R G…

Windows安装配置Rust(附CLion配置与运行)

Windows安装配置Rust&#xff08;附CLion配置与运行&#xff09; 前言一、下载二、安装三、配置标准库&#xff01;&#xff01;&#xff01;四、使用 CLion 运行 rust1、新建rust项目2、配置运行环境3、运行 前言 本文以 windows 安装为例&#xff0c;配置编译器为 minGW&…

机器学习——KNN算法

1、&#xff1a;前提知识 KNN算法是机器学习算法中用于分类或者回归的算法&#xff0c;KNN全称为K nearest neighbour&#xff08;又称为K-近邻算法&#xff09; 原理&#xff1a;K-近邻算法采用测量不同特征值之间的距离的方法进行分类。 优点&#xff1a;精度高 缺点&…

解决jupyter notebook可以使用pytorch而Pycharm不能使用pytorch的问题

之前我是用的这个目录下的Python 尝试1 改变virtualenv environment 1、 2、 3、 尝试2 改变Conda Environment 第二天登录Pycharm发现 import torch又标红了&#xff0c;以下是解决的操作步骤 点击Load Environments就可以解决了&#xff01; 尝试3 改变System Interpre…

SpringBoot-学习笔记(基础)

文章目录 1. 概念1.1 SpringBoot快速入门1.2 SpringBoot和Spring对比1.3 pom文件坐标介绍1.4 引导类1.5 修改配置1.6 读取配置1.6.1 读取配置信息1.6.2 读取配置信息并创建类进行封装 1.7 整合第三方技术1.7.1 整合JUnit1.7.1 整合Mybatis1.7.1 整合Mybatis-Plus1.7.1 整合Drui…

MVC模式分层练习

新建库 新建表 插入点数据 先不用MVC模式写功能,来看下缺点是什么 新建一个空项目 选项项目使用的JDK 自己的IDEA总是要重启下 新建模块 因maven还没教 添加框架支持 添加后项目多了这些 添加些必要依赖 这里注意下,如果导入jar包不对可以重新导入下或者是jar包本身出了问…

【Linux】线程安全-生产者消费者模型

文章目录 生产者消费者模型123规则应用场景优点忙闲不均生产者和消费者解耦支持高并发 代码模拟 生产者消费者模型 123规则 1个线程安全的队列&#xff1a;只要保证先进先出特性的数据结构都可以称为队列 这个队列要保证互斥&#xff08;就是保证当前只有一个线程对队列进行操…

【数据结构】| 并查集及其优化实现

目录 一. 并查集基本概念处理过程初始化合并查询小结 二. 求并优化2.1 按大小求并2.2 按秩(高度)求并2.3 路径压缩2.4 类的实现代码2.5 复杂度分析 三. 应用LeetCode 128: 最长连续数列LeetCode 547: 省份数量LeetCode 200: 岛屿数量 一. 并查集基本概念 以一个直观的问题来引入…

Linux 通过 Docker 部署 Nacos 2.2.3 服务发现与配置中心

目录 环境准备Nacos 数据库创建Docker 部署 Nacos1. 创建挂载目录2. 下载镜像3. 创建和启动容器4. 访问控制台 导入 Nacos 配置SpringBoot 整合 Nacospom 依赖application.yml 配置 参考官方链接微服务商城源码 环境准备 名称版本IP端口Nacos2.2.3192.168.10.218848、9848MySQ…