ConEx:Convolutional Complex Knowledge Graph Embeddings+代码

知识图谱的几个经典模型:TransE、Trans R、ComplEx、ConvKB :::info 💡 这几个模型都是KG表示的经典模型,关于如何对三元组建模Embedding。以下第一个表格是关于各类建模方法中,关系是否能满足一些特性进行的汇总。 ::: 对称性:例如朋友关系。如果有h(r , t),一定有h(t , r); 反对称性:例如购买关系与出售关系。如果有h1(r, t) ,一定有h2(t ,r); 【h1和 h2是相反方向的一对向量】 传递性:例如亲属关系,父亲的父亲是爷爷。如果有h1(r , t) 和h2(t, y),一定有h3(r , y) 一对N:例如教学关系,一个老 阅读详情

Convolutional Complex Knowledge Graph Embeddings

1 介绍

1.1 思想

该论文的核心就是结合ComplEx和维度卷积的形式,进行知识图谱补全。

1.2 知识图谱中存在的关系

  • symmetric(对称)
    if ( h , r , t ) ⇐ ⇒ ( t , r , h ) (h, r, t) ⇐⇒ (t, r, h) (h,r,t)⇐⇒(t,r,h) for all pairs of entities h , t ∈ E h, t \in \mathbf {E} h,t∈E
  • anti-symmetric(反对称)
    if ( h , r , t ) ∈ G ⇒ ( t , r , h ) ∉ G (h, r, t) ∈ G ⇒ (t, r, h) \notin \mathbb G (h,r,t)∈G⇒(t,r,h)∈/​G for all h ≠ t h \neq t h​=t
  • transitive/composite(传递关系)
    if ( h , r , t ) ∈ G ∧ ( t , r , y ) ∈ G ⇒ ( h , r , y ) ∈ G (h, r, t) ∈ G ∧ (t, r, y) ∈ G ⇒ (h, r, y) ∈ G (h,r,t)∈G∧(t,r,y)∈G⇒(h,r,y)∈G for all h , t , y ∈ E h, t, y \in \mathbf {E} h,t,y∈E
  • inverse(逆关系)
    h and t是实体, , ( h , r , t ) ∈ G ⇐ ⇒ ( t , r − 1 , h ) ∈ G , (h, r, t) \in \mathbb G ⇐⇒ (t, r^{-1}, h) \in \mathbb G ,(h,r,t)∈G⇐⇒(t,r−1,h)∈G

1.3 ComplEx特点

将数据的维度引入复平面,可以执行以上四种类型的数据,但是在传递关系效果不好。

2 模型

2.1 公式

给一组三元组 ( h , r , t ) (\mathrm{h}, \mathrm{r}, \mathrm{t}) (h,r,t), ConEx,: C 3 d ↦ R \mathbb{C}^{3 d} \mapsto \mathbb{R} C3d↦R 计算CONEx评分 : C 3 d ↦ R \mathbb{C}^{3 d} \mapsto \mathbb{R} C3d↦R 公式为:
ConEx ⁡ ( h , r , t ) = Re ⁡ ( ⟨ conv ⁡ ( e h , e r ) , e h , e r , e t ‾ ⟩ ) \operatorname{ConEx}(\mathrm{h}, \mathrm{r}, \mathrm{t})=\operatorname{Re}\left(\left\langle\operatorname{conv}\left(\mathbf{e}_{h}, \mathbf{e}_{r}\right), \mathbf{e}_{h}, \mathbf{e}_{r}, \overline{\mathbf{e}_{t}}\right\rangle\right) ConEx(h,r,t)=Re(⟨conv(eh​,er​),eh​,er​,et​​⟩)
其中 conv ⁡ ( ⋅ , ⋅ ) : C 2 d ↦ C d \operatorname{conv}(\cdot, \cdot): \mathbb{C}^{2 d} \mapsto \mathbb{C}^{d} conv(⋅,⋅):C2d↦Cd 定义为:
conv ⁡ ( e h , e r ) = f ( vec ⁡ ( f ( [ e h , e r ] ∗ ω ) ) ⋅ W + b ) \operatorname{conv}\left(\mathbf{e}_{h}, \mathbf{e}_{r}\right)=f\left(\operatorname{vec}\left(f\left(\left[\mathbf{e}_{h}, \mathbf{e}_{r}\right] * \omega\right)\right) \cdot \mathbf{W}+\mathbf{b}\right) conv(eh​,er​)=f(vec(f([eh​,er​]∗ω))⋅W+b)
将公式展开为ComplEx的形式为:
ConEx ⁡ ( h , r , t ) = Re ⁡ ( ∑ k = 1 d ( γ ) k ( e h ) k ( e r ) k ( e t ‾ ) k ) = ⟨ Re ⁡ ( γ ) , Re ⁡ ( e h ) , Re ⁡ ( e r ) , Re ⁡ ( e t ) ⟩ + ⟨ Re ⁡ ( γ ) , Re ⁡ ( e h ) , Im ⁡ ( e r ) , Im ⁡ ( e t ) ⟩ + ⟨ Im ⁡ ( γ ) , Im ⁡ ( e h ) , Re ⁡ ( e r ) , Im ⁡ ( e t ) ⟩ − ⟨ Im ⁡ ( γ ) , Im ⁡ ( e h ) , Im ⁡ ( e r ) , Re ⁡ ( e t ) ⟩ \begin{aligned} \operatorname{ConEx}(h, r, t)=& \operatorname{Re}\left(\sum_{k=1}^{d}(\gamma)_{k}\left(\mathbf{e}_{h}\right)_{k}\left(\mathbf{e}_{r}\right)_{k}\left(\overline{\mathbf{e}_{t}}\right)_{k}\right) \\ =&\left\langle\operatorname{Re}(\gamma), \operatorname{Re}\left(\mathbf{e}_{h}\right), \operatorname{Re}\left(\mathbf{e}_{r}\right), \operatorname{Re}\left(\mathbf{e}_{t}\right)\right\rangle \\ &+\left\langle\operatorname{Re}(\gamma), \operatorname{Re}\left(\mathbf{e}_{h}\right), \operatorname{Im}\left(\mathbf{e}_{r}\right), \operatorname{Im}\left(\mathbf{e}_{t}\right)\right\rangle \\ &+\left\langle\operatorname{Im}(\gamma), \operatorname{Im}\left(\mathbf{e}_{h}\right), \operatorname{Re}\left(\mathbf{e}_{r}\right), \operatorname{Im}\left(\mathbf{e}_{t}\right)\right\rangle \\ &-\left\langle\operatorname{Im}(\gamma), \operatorname{Im}\left(\mathbf{e}_{h}\right), \operatorname{Im}\left(\mathbf{e}_{r}\right), \operatorname{Re}\left(\mathbf{e}_{t}\right)\right\rangle \end{aligned} ConEx(h,r,t)==​Re(k=1∑d​(γ)k​(eh​)k​(er​)k​(et​​)k​)⟨Re(γ),Re(eh​),Re(er​),Re(et​)⟩+⟨Re(γ),Re(eh​),Im(er​),Im(et​)⟩+⟨Im(γ),Im(eh​),Re(er​),Im(et​)⟩−⟨Im(γ),Im(eh​),Im(er​),Re(et​)⟩​
其中 e t ‾ \overline{\mathbf{e}_{t}} et​​是 e t \mathbf{e}_{t} et​的共轭,而 γ \gamma γ 是 conv ⁡ ( e h , e r ) \operatorname{conv}\left(\mathbf{e}_{h}, \mathbf{e}_{r}\right) conv(eh​,er​) 卷积后的结果. 乘法包括 conv ⁡ ( ⋅ , ⋅ ) \operatorname{conv}(\cdot, \cdot) conv(⋅,⋅) ,并且卷积之后产生两个结果, Re ⁡ ( γ ) \operatorname{Re}(\gamma) Re(γ) and Im ⁡ ( γ ) \operatorname{Im}(\gamma) Im(γ) 。

2.2 损失函数

在这里插入图片描述
其中 y ^ ∈ R ∣ ε ∣ \widehat{y}\in \mathbb R^{\left\vert \varepsilon \right\vert } y ​∈R∣ε∣为预测概率的向量, y ∈ [ 0 , 1 ] ∣ ε ∣ y\in [0, 1]^{\left\vert \varepsilon \right\vert } y∈[0,1]∣ε∣

3 代码

源码

class ConEx(torch.nn.Module):
    """ Convolutional Complex Knowledge Graph Embeddings"""

    def __init__(self, params=None):
        super(ConEx, self).__init__()
        self.name = 'ConEx'
        self.loss = torch.nn.BCELoss()
        self.param = params
        self.embedding_dim = self.param['embedding_dim']
        self.num_entities = self.param['num_entities']
        self.num_relations = self.param['num_relations']
        self.kernel_size = self.param['kernel_size']
        self.num_of_output_channels = self.param['num_of_output_channels']

        # Embeddings.
        self.emb_ent_real = nn.Embedding(self.param['num_entities'], self.embedding_dim)  # real
        self.emb_ent_i = nn.Embedding(self.param['num_entities'], self.embedding_dim)  # imaginary i

        self.emb_rel_real = nn.Embedding(self.param['num_relations'], self.embedding_dim)  # real
        self.emb_rel_i = nn.Embedding(self.param['num_relations'], self.embedding_dim)  # imaginary i

        # Dropouts
        self.input_dp_ent_real = torch.nn.Dropout(self.param['input_dropout'])
        self.input_dp_ent_i = torch.nn.Dropout(self.param['input_dropout'])
        self.input_dp_rel_real = torch.nn.Dropout(self.param['input_dropout'])
        self.input_dp_rel_i = torch.nn.Dropout(self.param['input_dropout'])

        # Batch Normalization
        self.bn_ent_real = torch.nn.BatchNorm1d(self.embedding_dim)
        self.bn_ent_i = torch.nn.BatchNorm1d(self.embedding_dim)
        self.bn_rel_real = torch.nn.BatchNorm1d(self.embedding_dim)
        self.bn_rel_i = torch.nn.BatchNorm1d(self.embedding_dim)

        # Convolution
        self.conv1 = torch.nn.Conv1d(in_channels=1, out_channels=self.num_of_output_channels,
                                     kernel_size=(self.kernel_size, self.kernel_size), stride=1, padding=1, bias=True)

        self.fc_num_input = self.embedding_dim * 4 * self.num_of_output_channels  # 4 because of 4 real values in 2 complex numbers
        self.fc = torch.nn.Linear(self.fc_num_input, self.embedding_dim * 2)

        self.bn_conv1 = torch.nn.BatchNorm2d(self.num_of_output_channels)
        self.bn_conv2 = torch.nn.BatchNorm1d(self.embedding_dim * 2)
        self.feature_map_dropout = torch.nn.Dropout2d(self.param['feature_map_dropout'])

    def residual_convolution(self, C_1, C_2):
        emb_ent_real, emb_ent_imag_i = C_1
        emb_rel_real, emb_rel_imag_i = C_2
        # Think of x a n image of two complex numbers.
        x = torch.cat([emb_ent_real.view(-1, 1, 1, self.embedding_dim),
                       emb_ent_imag_i.view(-1, 1, 1, self.embedding_dim),
                       emb_rel_real.view(-1, 1, 1, self.embedding_dim),
                       emb_rel_imag_i.view(-1, 1, 1, self.embedding_dim)], 2)

        x = self.conv1(x)
        x = F.relu(self.bn_conv1(x))
        x = self.feature_map_dropout(x)
        x = x.view(x.shape[0], -1)  # reshape for NN.
        x = F.relu(self.bn_conv2(self.fc(x)))
        return torch.chunk(x, 2, dim=1)

    def forward_head_batch(self, *, e1_idx, rel_idx):
        """
        Given a head entity and a relation (h,r), we compute scores for all entities.
        [score(h,r,x)|x \in Entities] => [0.0,0.1,...,0.8], shape=> (1, |Entities|)
        Given a batch of head entities and relations => shape (size of batch,| Entities|)
        """
        # (1)
        # (1.1) Complex embeddings of head entities and apply batch norm.
        emb_head_real = self.bn_ent_real(self.emb_ent_real(e1_idx))
        emb_head_i = self.bn_ent_i(self.emb_ent_i(e1_idx))
        # (1.2) Complex embeddings of relations and apply batch norm.
        emb_rel_real = self.bn_rel_real(self.emb_rel_real(rel_idx))
        emb_rel_i = self.bn_rel_i(self.emb_rel_i(rel_idx))

        # (2) Apply convolution operation on (1).
        C_3 = self.residual_convolution(C_1=(emb_head_real, emb_head_i),
                                        C_2=(emb_rel_real, emb_rel_i))
        a, b = C_3

        # (3) Apply dropout out on (1).
        emb_head_real = self.input_dp_ent_real(emb_head_real)
        emb_head_i = self.input_dp_ent_i(emb_head_i)
        emb_rel_real = self.input_dp_rel_real(emb_rel_real)
        emb_rel_i = self.input_dp_rel_i(emb_rel_i)
        """
        # Remove convolution from the score calculation.
        real_real_real = torch.mm(emb_head_real * emb_rel_real, self.emb_ent_real.weight.transpose(1, 0))
        real_imag_imag = torch.mm(emb_head_real * emb_rel_i, self.emb_ent_i.weight.transpose(1, 0))
        imag_real_imag = torch.mm(emb_head_i * emb_rel_real, self.emb_ent_i.weight.transpose(1, 0))
        imag_imag_real = torch.mm(emb_head_i * emb_rel_i, self.emb_ent_real.weight.transpose(1, 0))
        score = real_real_real + real_imag_imag + imag_real_imag - imag_imag_real
        """
        # (4)
        # (4.1) Hadamard product of (2) and (1).
        # (4.2) Hermitian product of (4.1) and all entities.
        real_real_real = torch.mm(a * emb_head_real * emb_rel_real, self.emb_ent_real.weight.transpose(1, 0))
        real_imag_imag = torch.mm(a * emb_head_real * emb_rel_i, self.emb_ent_i.weight.transpose(1, 0))
        imag_real_imag = torch.mm(b * emb_head_i * emb_rel_real, self.emb_ent_i.weight.transpose(1, 0))
        imag_imag_real = torch.mm(b * emb_head_i * emb_rel_i, self.emb_ent_real.weight.transpose(1, 0))
        score = real_real_real + real_imag_imag + imag_real_imag - imag_imag_real
        return torch.sigmoid(score)

    def forward_head_and_loss(self, e1_idx, rel_idx, targets):
        return self.loss(self.forward_head_batch(e1_idx=e1_idx, rel_idx=rel_idx), targets)

    def init(self):
        xavier_normal_(self.emb_ent_real.weight.data)
        xavier_normal_(self.emb_ent_i.weight.data)
        xavier_normal_(self.emb_rel_real.weight.data)
        xavier_normal_(self.emb_rel_i.weight.data)

    def get_embeddings(self):
        entity_emb = torch.cat((self.emb_ent_real.weight.data, self.emb_ent_i.weight.data), 1)
        rel_emb = torch.cat((self.emb_rel_real.weight.data, self.emb_rel_i.weight.data), 1)
        return entity_emb, rel_emb

    def forward_triples(self, *, e1_idx, rel_idx, e2_idx):
        # (1)
        # (1.1) Complex embeddings of head entities and apply batch norm.
        emb_head_real = self.emb_ent_real(e1_idx)
        emb_head_i = self.emb_ent_i(e1_idx)
        # (1.2) Complex embeddings of relations.
        emb_tail_real = self.emb_ent_real(e2_idx)
        emb_tail_i = self.emb_ent_i(e2_idx)

        # (1.2) Complex embeddings of tail entities.
        emb_rel_real = self.emb_rel_real(rel_idx)
        emb_rel_i = self.emb_rel_i(rel_idx)

        # (2) Apply convolution operation on (1).
        C_3 = self.residual_convolution(C_1=(emb_head_real, emb_head_i),
                                        C_2=(emb_rel_real, emb_rel_i))
        a, b = C_3

        # (3) Apply dropout out on (1).
        emb_head_real = self.input_dp_ent_real(emb_head_real)
        emb_head_i = self.input_dp_ent_i(emb_head_i)
        emb_rel_real = self.input_dp_rel_real(emb_rel_real)
        emb_rel_i = self.input_dp_rel_i(emb_rel_i)
        # (4)
        # (4.1) Hadamard product of (2) and (1).
        # (4.2) Hermitian product of (4.1) and tail entities
        # Compute multi-linear product embeddings
        real_real_real = (a * emb_head_real * emb_rel_real * emb_tail_real).sum(dim=1)
        real_imag_imag = (a * emb_head_real * emb_rel_i * emb_tail_i).sum(dim=1)
        imag_real_imag = (b * emb_head_i * emb_rel_real * emb_tail_i).sum(dim=1)
        imag_imag_real = (b * emb_head_i * emb_rel_i * emb_tail_real).sum(dim=1)
        score = real_real_real + real_imag_imag + imag_real_imag - imag_imag_real
        return torch.sigmoid(score)

    def forward_triples_and_loss(self, e1_idx, rel_idx, e2_idx, targets):
        scores = self.forward_triples(e1_idx=e1_idx, rel_idx=rel_idx, e2_idx=e2_idx)
        return self.loss(scores, targets)
基于语义匹配的知识图谱推理模型(RESCAL、DistMult、HolE、ComplEx) 1、知识图谱表示成三维张量每个关系对应于张量(三维) 中的一个 切片(二维),即一个矩阵,如下图,其实相当于存储各对实体是否有这样的关系,有则表示为 1,没有则表示为 02、张量分解:RESCAL 通过将关系矩阵和实体向量结合起来,拟合张量(其中的每一层表示第 k 种关系下的所有实体对关系)中的每个值。具体来说,对于三元组 (h,r,t),其对应的值通过这种方式,RESCAL 可以捕捉到实体和关系的交互作用,从而表示出知识图谱中的复杂关系模式。3、优化目标:通过最小化函数来求得和。 阅读详情

相关推荐

知识图谱嵌入(KGE)主流模型简介

1. KGE简介 目前(2020.03)知识图谱嵌入研究方法众多,本文将对其中的主流方法进行简要介绍,如翻译、双线性、神经网络、双曲几何、旋转等。各方法细节请看原论文,文中错误欢迎指出,谢谢。 知识图谱嵌入(Knowledge Graph Embedding, KGE)学习知识库中的实体和关系的Embedding表示,是语义检索、知识问答、推荐等众多应⽤的基础研究。在具体了解KGE之前,我们先...

谓之小一 1万+

【复数表达】Encoding Word Order in Complex Embeddings

文章目录1. 简介2. 动机3. 方法3.1 定义:复数域:3.2 vs实数域3.3 简化:3.3 降低参数技巧4. 实验5. 参考 1. 简介 论文:ICLR 2020 https://openreview.net/pdf?id=Hke-WTVtwr 代码: 关联:本质上和之前CNM: An Interpretable Complex-valued Network for Matching是一个代码框架的。只是解释和理论角度不同。 2. 动机 词在文本中的位置和顺序是很重要的特征,但是神经网络做NLP建模

weixin_43882112的博客 1053

Encoding word order in complex embeddings稿

过去的positional embedding   首先介绍为什么需要位置编码。对于语言来说,单词的位置和顺序十分的重要。举个简单的例子:我在上山和我在山上,虽然这两句话组成的字都一样,但由于顺序不一样导致了完全不一样的语义。rnn的网络结构是一种顺序结构,能够学习到字符之间的顺序关系。而transformer的网络结构完全是一种self attention的叠加,是无法学习到语句的顺序关系的。因...

soulesstitan的博客 958

基于ComplEx模型的知识图谱嵌入详解

ComplEx模型于2016年提出,主要通过复数空间中的运算来表示知识图谱中的实体和关系。与传统的实数向量表示不同,ComplEx利用复数向量表示可以捕捉到更多的关系特性。

Y-starrydreamer的博客 2248

几种改进的embedding算法之代码实现

原理篇:https://blog.youkuaiyun.com/weixin_41089007/article/details/106604465 前段时间写了一篇关于几种改进的embedding算法的代码

weixin_41089007的博客 1876

知识图谱-KGE-语义匹配-双线性模型-2016:ComplEx【ComplEX是Distmul的改进】【将实数的Embedding映射到复数空间,从而可以处理非对称关系】

传递性建模为:如果有a·b和b·c,是否可以推算出a·c。用(x1,y1)表示a,(x2,y2)表示b,(x3,y3)表示c。打分函数:因此,对于该function,f (h,t)= hT·r·(t),t指的是t复数域上的共轭复数。前提:采用Bilinear Model,该模型的打分函数为f (h,t)= hT·r·t。反对称性:通过对 hT·r·(~t)的高打分+ (~h)T·r·t低打分训练。基础假设:采用复数u = a + bi的方式表示h和t。传递性:不满足,可以通过点积的性质进行简单证明,

u013250861的博客 2099

知识图谱-第三方工具:LibKGE(用于Knowledge Graph Embedding)【包含多种模型:TransE、DistMult、ComplEx、ConvE、Transformer等】

LibKGE的主要目的是为了助力知识图谱表示模型复现研究并提供训练方法。LibKGE提供整洁的训练实现,超参优化和评估策略。并且所有的现在的启发式实现都是基于本地配置文件,符合了软件的开闭原则,不同的参数,模型选择,只需要修改配置文件即可。

u013250861的博客 1551

知识图谱-KGE-模型:概述【翻译模型:Trans系列】【双线性模型:DisMult、ComplEx】【神经网络模型:ConvE、CapsE】【双曲几何模型:MuRP】【旋转模型:RotatE】

MuRP评分函数为 ,其中 表示在庞加莱圆盘中计算距离, 表示将庞加莱圆盘中的点映射到欧式空间, 表示对角矩阵, 表示将欧式空间中的点转移到庞加莱圆盘中, 是莫比乌斯加法,为庞加莱空间中两向量相加, 表示曲率。针对DisMult存在的问题,ComplEx把DisMult扩展到复数空间表示,并定义评分函数为 f_{r}(h,t) = Re(h^Tdiag(M_r)\bar{t}) ,其中 h, t 均用复数表示, \bar{t} 表示 t 的共轭复数,Re(\cdot) 表示取得复数的实部。

u013250861的博客 2366

Twitter推荐系统中的知识图谱嵌入:TransE与ComplEx实现

在社交媒体平台中,推荐系统需要理解用户兴趣与内容之间的复杂关联。Twitter的推荐系统通过知识图谱嵌入(Knowledge Graph Embedding, KGE)技术,将实体(如用户、推文)和关系(如关注、转发)映射到低维向量空间,从而高效计算实体间的语义关联。本文将解析Twitter推荐系统中两种核心KGE模型——TransE(Translational Embedding)和ComplE...

gitblog_00481的博客 895

TuckER:Tensor Factorization for Knowledge Graph Completion.pdf

Knowledge graphs are structured representations of real world facts. However, they typically contain only a small subset of all possible facts. Link prediction is a task of inferring missing facts based on existing ones. We propose TuckER, a relatively simple but powerful linear model based on Tucker decomposition of the binary tensor representation of knowledge graph triples. TuckER outperforms all previous state-of-the-art models acrossstandardlinkpredictiondatasets. Weprove that TuckER is a fully expressive model, deriving the bound on its entity and relation embedding dimensionality for full expressiveness which is several orders of magnitude smaller than the bound of previous state-of-the-art models ComplEx and SimplE. We further show that several previously introducedlinearmodelscanbeviewedasspecial cases of TuckER.

ZYNQ千兆网UDP通信实战:从Vivado配置到LWIP优化全流程(附避坑指南)

本文详细介绍了在ZYNQ平台上实现千兆以太网UDP通信的全流程,包括Vivado硬件配置、LWIP协议栈优化及实战代码示例。通过关键参数调整和性能优化,系统吞吐量可提升至850Mbps以上,适用于高速网络通信场景。

weixin_29161785的博客 230

复杂知识图谱问答综述方法、挑战和解决办法

公众号 系统之神与我同在 本文翻译自 A Survey on Complex Knowledge Base Question Answering: Methods, Challenges and Solutions​arxiv.org/abs/2105.11644 摘要A Survey on Complex Knowledge Base Question Answering: Methods, Challenges and Solutions摘要 知识库问答(KBQA)旨在通过知识库回答问题。近来,

朝闻道 2580

Kotlin原生AI Agent框架Koog:为JVM开发者打造类型安全、企业级智能体开发方案

AI Agent作为当前人工智能应用开发的核心范式,通过赋予大语言模型(LLM)自主规划、工具调用和环境交互能力,正在重塑软件智能化进程。其技术原理基于智能体架构,通过提示工程、函数调用和记忆机制,将LLM从单纯的文本生成器转变为能够执行复杂任务的工作流引擎。这一技术价值在于显著降低了构建智能应用的开发门槛,同时保持了高度的灵活性和可扩展性。在实际应用场景中,AI Agent广泛落地于智能客服、代码助手、数据分析自动化等领域,成为连接大模型能力与具体业务需求的关键桥梁。本文聚焦的Koog框架,正是针对JVM

weixin_42594419的博客 395

推荐系统初学者系列(8)-- Graph Embedding(网络嵌入表示)做Top-K推荐

上一篇:Surprise库做Top-K推荐

私人天地 1万+

手把手带你搭建一个语音对话机器人:5分钟定制个人AI小助手

通过本文的简单步骤,你已经掌握了如何用 Python 搭建一个语音对话机器人。我们使用了实现语音识别,利用 OpenAI API 生成对话内容,并通过gTTS将文本转换为语音。整个流程非常简洁,你可以根据自己的需求进一步扩展机器人功能,甚至将其集成到实际的应用场景中。

小蜗牛的珍贵百宝箱 4804

保姆级教程:用ROS2 Humble + Gazebo Classic 从零搭建一个能键盘控制的差分AGV模型

本文提供了一份详细的ROS2 Humble与Gazebo Classic教程,指导用户从零开始搭建一个键盘控制的差分AGV模型。内容涵盖环境配置、Xacro文件设计、Gazebo仿真集成以及键盘控制实现,特别针对常见问题提供解决方案,帮助开发者快速掌握ROS2机器人仿真技术。

weixin_30387423的博客 168

convolutional 2D knowledge graph embedding 解读

convolutional 2D knowledge graph embedding 解读来源backgroundmotivation模型实验结果代码链接 来源 AAAI 2018 伦敦大学 background 知识图谱在很多领域都有广泛的应用,例如搜索、问答、推荐系统等等,但是目前的知识图谱大多存在两个问题:1.知识图谱的不完整性,例如属性缺失或者关系缺失 2. 知识图谱存在错误的关系或者属性...

damuge2的博客 5647

从零搭建uniapp+vue3+ts+tailwindcss多端兼容开发环境

本文详细介绍了如何从零搭建uniapp+vue3+ts+tailwindcss多端兼容开发环境,包括环境准备、TailwindCSS集成、小程序兼容性解决方案以及样式优化技巧。通过实战步骤和常见问题解答,帮助开发者快速掌握这套技术栈,提升开发效率。

weixin_28693309的博客 323

CS224W摘要10.Knowledge Graph Embeddings

文章目录Heterogeneous Graphs and Relational GCN (RGCN)Heterogeneous GraphsRGCNblock diagonal matricesBasis/Dictionary learningLink Prediction CS224W: Machine Learning with Graphs 公式输入请参考:在线Latex公式 主要内容: 1.介绍 异质图heterogeneous graph的概念和异质图经典baseline:relational G

老毛的博客 1464

HDFView安装及使用教程

简介:直接用记事本打开hdf5文件的话,是一团乱码。HDFView是用来查看hdf5文件的软件,可以免费使用,好多人都有闪退的情况,这是因为没有添加环境变量。

qq_43722079的博客 7万+

华为用自研的MetaERP替换全球顶级的SAP ERP系统,其难度与风险远超一次普通的技术升级,它是一场战略级的、涉及业务筋骨的系统性工程

华为成功用自研MetaERP替换SAP系统,这是一项极具挑战的战略工程。面临四大难度:业务复杂度高(170多国业务)、数据迁移量大(20年历史数据)、技术集成复杂(重构生态系统)、人员适应周期长。同时伴随四大风险:业务中断、数据失真、成本超支、供应链协同问题。华为成功的关键在于:生存压力驱动的战略决心、强大的软件研发能力、以自身业务为试验场、分步实施策略。这一案例证明中国企业能攻克高端软件壁垒,但对大多数企业而言,核心系统替换需谨慎评估风险,建议采用渐进式替代策略。

金牌架构师 535

《Convolutional 2D Knowledge Graph Embeddings》论文学习

问题提出背景:知识图谱的链路预测是预测实体之间确实关系的任务,以前的链路任务只集中在比较浅层次的还有快速的模型,这些可以用来扩展到大型知识图谱,但是这些模型比深度多层模型表达的特征更少,会限制其性能。方法:在这里我们介绍了convE,一个用于链路预测的多层神经网络,并报告了几个已经建立好的数据集的最新的成果。效果:它具有比较高的参数效率,它的性能跟DisMult和R-GCN相同,但是他的参数比这两个少了8倍和17倍。对我们的模型分析发现,它在建模高度结点的时候特别有效,这在连接具有高度连接的复杂知识图谱中很

m0_45293058的博客 1274

让 OData V4 界面更聪明:SAP UI5 中的 Side Effects 全解析

摘要:在OData V4应用中,字段修改常触发联动更新(Side Effects)。SAP UI5支持通过后端PATCH响应隐式返回或前端显式请求(requestSideEffects)两种方式处理。最佳实践包括:在validateFieldGroup事件中触发同批次请求,使用$$patchWithoutSideEffects避免重复刷新,并在草稿场景优化响应体。注解定义触发规则,而前端负责执行时机,二者配合可减少网络开销并保证数据一致性。Fiori elements进一步扩展了Side Effects在批

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 177

从ACL 2020和ICLR 2020看知识图谱嵌入的近期研究进展

©PaperWeekly 原创 ·作者|舒意恒学校|南京大学硕士生研究方向|知识图谱本文介绍三篇发表于 ACL 2020 或 ICLR 2020 关于知识图谱嵌入的近期研究进展。1. ...

Paper weekly 2988

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

论文浅尝 | Complex Embeddings for Simple Link Prediction

读完Knowledge Graph Embedding with Iterative Guidance from Soft Rules的大致思想后,好奇为什么要用复数来表示一个向量,就想看另一篇论文: Complex Embeddings for Simple Link Prediction 然后发现,有个博客很好的说了这个事,我就转过来以后学习 博客:论文浅尝 | Complex Embed...

大章鱼有小学术之心的博客 5257

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

图神经网络(10)- knowledge graph(知识图谱)

主要是介绍知识图谱以及一些解决知识图谱问题的经典算法,与GNN关系不大。GNN是现在解决知识图谱问题的一种新方法。

qq_44689178的博客 4265

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

上一篇: InteractE: Improving Convolution-Based Knowledge Graph Embeddings by Increasing Feature Interactions
下一篇: leetcode:单词长度的最大乘积
Re:fused
博客等级 码龄9年 474粉丝 162原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值