DGL 和 torch 对应关系

一、报错

import dgl 

报错:

RuntimeError: DGL requires PyTorch >= 1.12.0

报错提示需要升级torch的版本,换言之需要降低dgl的版本
可以先查看本地dgl的版本

pip list

二、解决办法

dgl 1.1.0 这个版本对应python39 的 torch 1.9
也可以对应 python37 的 torch 1.10.2

安装方法

pip install --user dgl==1.1.0

或者访问镜像

https://pypi.tuna.tsinghua.edu.cn/simple/dgl/

在这里插入图片描述

三、小白兜底方法

调整版本号下载dgl, 运行本地代码,若运行失败则删除dgl,并继续降低版本号安装,如此循环直至脚本运行成功。

pip install --user dgl==1.1.0
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
可以使用DGL库实现基于GCN嵌入的向量计算实体和关系对应的向量之间的乘积。具体步骤如下: 1. 载入数据,包括实体和关系的嵌入向量,以及它们之间的连接关系。 2. 根据连接关系构建图,并将实体和关系的嵌入向量作为节点特征。 3. 使用GCN模型对图进行训练,得到节点的向量表示。 4. 根据给定的实体和关系,找到它们在图中对应的节点,并计算它们的向量乘积,即可得到实体和关系对应的向量之间的乘积。 下面是示例代码: ``` import dgl import torch import torch.nn as nn import torch.nn.functional as F # 载入数据 entity_embed = torch.randn(100, 50) # 实体嵌入向量,100个实体,每个向量维度为50 relation_embed = torch.randn(20, 50) # 关系嵌入向量,20个关系,每个向量维度为50 edges = [(i, j) for i in range(100) for j in range(20)] # 实体和关系之间的连接关系 # 构建图 g = dgl.DGLGraph() g.add_nodes(120) # 图中有120个节点(100个实体和20个关系) src, dst = tuple(zip(*edges)) g.add_edges(src, 100+torch.tensor(dst)) # 添加边,将关系节点的ID加上100 # 将实体和关系的嵌入向量作为节点特征 g.ndata['entity'] = entity_embed g.ndata['relation'] = relation_embed # 定义GCN模型 class GCN(nn.Module): def __init__(self, in_feats, hidden_feats, out_feats): super(GCN, self).__init__() self.conv1 = dgl.nn.GraphConv(in_feats, hidden_feats) self.conv2 = dgl.nn.GraphConv(hidden_feats, out_feats) def forward(self, g): h = g.ndata['entity'] h = self.conv1(g, h) h = F.relu(h) h = self.conv2(g, h) return h # 训练GCN模型 model = GCN(50, 32, 16) optimizer = torch.optim.Adam(model.parameters(), lr=0.01) for epoch in range(10): logits = model(g) loss = F.mse_loss(logits[:100], entity_embed) # 只计算实体节点的损失 optimizer.zero_grad() loss.backward() optimizer.step() # 计算实体和关系对应的向量之间的乘积 entity_id = 5 # 假设要计算第5个实体和第10个关系对应的向量之间的乘积 relation_id = 10 entity_embed = model(g).detach().numpy()[:100] # 获取实体节点的向量表示 relation_embed = relation_embed.detach().numpy()[relation_id] result = np.dot(entity_embed[entity_id], relation_embed) print(result) ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

高山莫衣

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值