诸神缄默不语-个人CSDN博文目录

以PyG官方的数据集和示例代码来复现一下这个问题:

import torchimport torch_geometric.transforms as T
from torch_geometric.datasets import OGB_MAG
from torch_geometric.nn import SAGEConv, to_heterodataset = OGB_MAG(root='files/pyg_data', preprocess='metapath2vec')
data = dataset[0]print(data)class GNN(torch.nn.Module):def __init__(self, hidden_channels, out_channels):super().__init__()self.conv1 = SAGEConv((-1, -1), hidden_channels)self.conv2 = SAGEConv((-1, -1), out_channels)def forward(self, x, edge_index):x = self.conv1(x, edge_index).relu()x = self.conv2(x, edge_index)return xmodel = GNN(hidden_channels=64, out_channels=dataset.num_classes)
model = to_hetero(model, data.metadata(), aggr='sum')with torch.no_grad():  # Initialize lazy modules.out = model(data.x_dict, data.edge_index_dict)print(out)

输出信息:

HeteroData(paper={x=[736389, 128],year=[736389],y=[736389],train_mask=[736389],val_mask=[736389],test_mask=[736389]},author={ x=[1134649, 128] },institution={ x=[8740, 128] },field_of_study={ x=[59965, 128] },(author, affiliated_with, institution)={ edge_index=[2, 1043998] },(author, writes, paper)={ edge_index=[2, 7145660] },(paper, cites, paper)={ edge_index=[2, 5416271] },(paper, has_topic, field_of_study)={ edge_index=[2, 7505078] }
)
my_env/lib/python3.8/site-packages/torch_geometric/nn/to_hetero_transformer.py:145: UserWarning: There exist node types ({'author'}) whose representations do not get updated during message passing as they do not occur as destination type in any edge type. This may lead to unexpected behaviour.warnings.warn(
Traceback (most recent call last):File "try2.py", line 25, in <module>model = to_hetero(model, data.metadata(), aggr='sum')File "env_path/lib/python3.8/site-packages/torch_geometric/nn/to_hetero_transformer.py", line 118, in to_heteroreturn transformer.transform()File "env_path/lib/python3.8/site-packages/torch_geometric/nn/fx.py", line 157, in transformgetattr(self, op)(node, node.target, node.name)File "env_path/lib/python3.8/site-packages/torch_geometric/nn/to_hetero_transformer.py", line 294, in call_methodargs, kwargs = self.map_args_kwargs(node, key)File "env_path/lib/python3.8/site-packages/torch_geometric/nn/to_hetero_transformer.py", line 397, in map_args_kwargsargs = tuple(_recurse(v) for v in node.args)File "env_path/lib/python3.8/site-packages/torch_geometric/nn/to_hetero_transformer.py", line 397, in <genexpr>args = tuple(_recurse(v) for v in node.args)File "env_path/lib/python3.8/site-packages/torch_geometric/nn/to_hetero_transformer.py", line 387, in _recurseraise NotImplementedError
NotImplementedError

可以很容易地看出来,这是由于有一种节点没有入边产生的问题。
解决方案就是使所有节点都有入边。如:

import torchimport torch_geometric.transforms as T
from torch_geometric.datasets import OGB_MAG
from torch_geometric.nn import SAGEConv, to_heterodataset = OGB_MAG(root='files/pyg_data', preprocess='metapath2vec',transform=T.ToUndirected())
data = dataset[0]print(data)class GNN(torch.nn.Module):def __init__(self, hidden_channels, out_channels):super().__init__()self.conv1 = SAGEConv((-1, -1), hidden_channels)self.conv2 = SAGEConv((-1, -1), out_channels)def forward(self, x, edge_index):x = self.conv1(x, edge_index).relu()x = self.conv2(x, edge_index)return xmodel = GNN(hidden_channels=64, out_channels=dataset.num_classes)
model = to_hetero(model, data.metadata(), aggr='sum')with torch.no_grad():  # Initialize lazy modules.out = model(data.x_dict, data.edge_index_dict)print(out)

将异质图转换为无向图,这样就能得到正常的输出结果:

HeteroData(paper={x=[736389, 128],year=[736389],y=[736389],train_mask=[736389],val_mask=[736389],test_mask=[736389]},author={ x=[1134649, 128] },institution={ x=[8740, 128] },field_of_study={ x=[59965, 128] },(author, affiliated_with, institution)={ edge_index=[2, 1043998] },(author, writes, paper)={ edge_index=[2, 7145660] },(paper, cites, paper)={ edge_index=[2, 10792672] },(paper, has_topic, field_of_study)={ edge_index=[2, 7505078] },(institution, rev_affiliated_with, author)={ edge_index=[2, 1043998] },(paper, rev_writes, author)={ edge_index=[2, 7145660] },(field_of_study, rev_has_topic, paper)={ edge_index=[2, 7505078] }
)
{'paper': tensor([[-0.8212, -0.2630, -0.7286,  ...,  1.1904,  0.1617, -0.5388],[-1.2484, -0.3707, -1.0336,  ...,  0.9618, -0.0373, -0.1125],[-0.5375,  0.0357, -0.6772,  ...,  1.2185,  0.2292, -0.2130],...,[-0.9934, -0.2688, -0.9547,  ...,  1.3144,  0.1519, -0.2015],[-1.4711, -0.6607, -0.7509,  ...,  2.3383,  0.6815, -1.0679],[-0.4352, -0.4255, -0.6907,  ...,  1.1532,  0.1152, -0.9703]]), 'author': tensor([[-0.2782,  0.1771,  0.4187,  ..., -0.5233, -0.2969,  0.2438],[-0.4543,  0.1019,  0.1637,  ..., -0.7748, -0.2809,  0.2598],[-0.1613, -0.0481, -0.2491,  ..., -0.6227, -0.4217,  0.1335],...,[-0.4908,  0.2382,  0.2973,  ..., -0.7266, -0.2486,  0.6449],[-0.2819,  0.0125,  0.9843,  ..., -1.9652, -0.4280, -0.4842],[-0.4236, -0.1222,  1.0246,  ..., -2.0615, -0.3246, -0.1771]]), 'institution': tensor([[ 0.3911, -1.3527, -0.6624,  ...,  0.2732,  0.5270,  0.5756],[ 0.1512, -0.6687, -0.6516,  ...,  0.1482,  0.2535,  0.1935],[ 0.1933, -1.1643, -0.4936,  ...,  0.5382,  0.3407,  0.2199],...,[ 0.1489, -0.3021, -0.3390,  ...,  0.2690,  0.1571, -0.0781],[ 0.1855, -0.4848, -0.3205,  ...,  0.4728,  0.0659,  0.1500],[ 0.1724, -0.0682, -0.0894,  ...,  0.1189,  0.1230, -0.2249]]), 'field_of_study': tensor([[ 0.1929, -0.5402, -0.5714,  ..., -0.4296,  0.4376, -0.0660],[-0.2281,  0.0773, -0.0486,  ..., -0.0544, -0.2894,  0.2706],[-0.2798, -0.1967, -0.3376,  ..., -0.3098, -0.1610,  0.1120],...,[ 0.0775, -0.5927, -0.6084,  ..., -0.3190,  0.2483, -0.1418],[ 0.0286, -0.7393, -0.6629,  ..., -0.4745,  0.8461, -0.1554],[-0.0804, -0.5598, -0.8517,  ..., -0.2317,  0.3234, -0.0520]])}

PyG异质图神经网络NotImplementedError问题相关推荐

  1. PyG (PyTorch Geometric) 异质图神经网络HGNN

    诸神缄默不语-个人CSDN博文目录 PyTorch Geometric (PyG) 包文档与官方代码示例学习笔记(持续更新ing-) 本文介绍使用PyG实现异质图神经网络(HGNN)的相关操作. 本文 ...

  2. WWW 2021最佳论文亚军:基于属性补全的异质图神经网络新架构

    ©作者 | 机器之心编辑部 来源 | 机器之心 4 月 23 日,万维网顶会 WWW-2021(The Web Conference 2021: International World Wide We ...

  3. 直播 | KDD 2021论文解读:基于协同对比学习的自监督异质图神经网络

    「AI Drive」是由 PaperWeekly 和 biendata 共同发起的学术直播间,旨在帮助更多的青年学者宣传其最新科研成果.我们一直认为,单向地输出知识并不是一个最好的方式,而有效地反馈和 ...

  4. 直播 | 北邮博士生纪厚业:异质图神经网络在阿里推荐业务中的探索

    「AI Drive」是由 PaperWeekly 和 biendata 共同发起的学术直播间,旨在帮助更多的青年学者宣传其最新科研成果.我们一直认为,单向地输出知识并不是一个最好的方式,而有效地反馈和 ...

  5. 今晚直播 | 北邮博士生纪厚业:异质图神经网络之模型和应用

    「PW Live」是 PaperWeekly 的学术直播间,旨在帮助更多的青年学者宣传其最新科研成果.我们一直认为,单向地输出知识并不是一个最好的方式,而有效地反馈和交流可能会让知识的传播更加有意义, ...

  6. PW Live 直播 | 北邮博士生纪厚业:异质图神经网络之模型和应用

    「PW Live」是 PaperWeekly 的学术直播间,旨在帮助更多的青年学者宣传其最新科研成果.我们一直认为,单向地输出知识并不是一个最好的方式,而有效地反馈和交流可能会让知识的传播更加有意义, ...

  7. 2019年,异质图神经网络领域有哪些值得读的顶会论文?

    本文主要梳理了 2019 年各大顶会上关于异质图神经网络的论文,包括算法研究及应用研究.同时,作者也整理了相关大牛老师/论文/资料/数据集供大家学习. 作者丨纪厚业 学校丨北京邮电大学博士生 研究方向 ...

  8. 异质图神经网络及其在电商领域中的应用

    今天,我们首先将介绍北邮计算机学院教授石川的<异质图神经网络及其在电商中的应用>. 本次讲座中,石川针对图神经网络研究的重要挑战--传统采用的是同质图数据,无法满足业界交互系统对异质图的实 ...

  9. Heterogeneous Graph Neural Network(异质图神经网络)

    Heterogeneous Information Network 传统的同构图(Homogeneous Graph)中只存在一种类型的节点和边,当图中的节点和边存在多种类型和各种复杂的关系时,再采用 ...

最新文章

  1. Please do not register multiple Pages in pages/buildhelp/buildhelp.js
  2. LeetCode Power of Three
  3. Storage medium
  4. Objects非空判断_requireNonNull方法
  5. 在Ocelot中使用自定义的中间件(一)
  6. php可以用scanf,C/C++中 使用scanf和printf如何读入输出double型数据。
  7. 4-adjacent(AtCoder-2686)
  8. 基于FPGA的红外遥控解码与PC串口通信
  9. 【MySQL】Unknown column 'column_name' in 'field list'
  10. 高通QFIL刷机指南
  11. IE浏览器无法下载文件的解决办法(windows服务器)
  12. 为什么很多人选择bgp机房托管
  13. 经验之谈:做好淘宝客的一些经验秘籍
  14. PMP第12章采购管理
  15. c语言游戏菜单栏界面设计,俄罗斯方块——菜单和游戏界面.cpp
  16. 免费的xshell(正版)
  17. jquery中的循环技巧
  18. python画频率统计图
  19. Java开发人员必须掌握的两个Linux魔法工具(四)
  20. python货币转换编程_Python实现制度转换(货币,温度,长度)

热门文章

  1. ssl证书的含义是什么,ssl证书有什么作用
  2. android 系统中修改系统的版本号
  3. facebook海外社交媒体广告平台的几种广告形式和类型
  4. CSS自适应实现图标右上角消息数字提示
  5. 跨平台键鼠共享synergy和常见问题
  6. 8球胜负(eight)
  7. 使用python高效办公Excel(直接模板套用)
  8. 目前使用AS400核心系统的银行列表
  9. linux下载google chrome,chromedriver,使用webdriver.Chrome()
  10. LIN总线增强型校验_雷洪钧:汽车总线及车载网技术概述