图神经网络之异构图转同构图

news/2024/10/10 22:06:53/

heterogeneous graph转homogeneous

  • 异构图创建教程
  • dgl.to_homogeneous语法格式
  • 例子

异构图创建教程

对于异构图创建,可以看异构图创建教程

dgl.to_homogeneous语法格式

dgl.to_homogeneous(G, ndata=None, edata=None, store_type=True, return_count=False)
  • G:传入的异构图
  • ndata (可选):组合所有节点特征,行为节点数,列为特征维度。例如 ndata=[‘h’],则将组合后的所有节点特征赋给ndata[‘h’]。因此,所有节点类型的特征必须具有相同的形状和数据类型。默认情况下,返回的图将不包含任何节点特征。
  • edata(可选):和ndata同理
  • store_type (可选):如果为 True,则在返回的图中存储类型信息,作为 dgl.NTYPE 和 dgl.ETYPE 特征。默认为True
  • return_count (可选):如果为 True,则返回类型信息,作为整数列表;第 i 个元素对应第 i 种类型的节点/边的数量。默认为False

例子

import dgl
import torch
hg = dgl.heterograph({('user', 'follows', 'user'): ([0, 1], [1, 2]),('developer', 'develops', 'game'): ([0, 1], [0, 1])})
hg.nodes['user'].data['h'] = torch.ones(3, 1)
hg.nodes['developer'].data['h'] = torch.zeros(2, 1)
hg.nodes['game'].data['h'] = torch.ones(2, 1)
g = dgl.to_homogeneous(hg)
# The first three nodes are for 'user', the next two are for 'developer',
# and the last two are for 'game'
print(f'节点信息为:{g.ndata}')
print('--------------------')
# The first two edges are for 'follows', and the next two are for 'develops' edges.
print(f'边信息为:{g.edata}')
print('--------------------')
g = dgl.to_homogeneous(hg, ndata=['h'])
print(f"节点特征为:{g.ndata['h']}")

结果如下:
在这里插入图片描述
对于节点特征,可以看到矩阵的行为节点数,列为特征维度


http://www.ppmy.cn/news/1537138.html

相关文章

从编程视角看生命、爱、自由、生活的排列顺序

从编程视角看生命、爱、自由、生活的排列顺序 离开大学校园,踏入大厂成为一名算法工程师后,我常以编程思维看待生活中的事物。在思考生命、爱、自由和生活的排列顺序时,发现从编程角度分析这些概念会有独特见解。 一、生命——程序的核心代…

【SQL】掌握SQL查询技巧:数据聚合与分析

目录 1. 什么是聚合函数?2. 常见聚合函数详解2.1 COUNT 函数2.2 SUM 函数2.3 AVG 函数2.4 MIN 和 MAX 函数 3. 聚合函数的可视化示例3. 使用 GROUP BY 进行分组4. 使用 HAVING 子句过滤聚合结果5. 使用 GROUP BY 和 ORDER BY 进行分组和排序5. 实际应用案例5.1 实现…

高效数据处理:MapReduce与Hive的实战应用

文章目录 hive分析汇总互联网日志分析1.项目需求2.数据说明3.算法思路 用户电影推荐1.项目需求2.数据说明3.算法思路4.解题步骤 简单数据统计WordCount数据说明 疫情数据分析1.项目需求2.数据说明step1:创建ods层数据表step2:创建dwd层数据表step3:创建d…

【WebGis开发 - Cesium】三维可视化项目教程---视点管理

目录 引言一、基础功能探索1. 镜头视角获取2. 镜头视角移动 二、进一步封装代码1. 封装hooks函数2. 看下效果3. 如何使用该hooks函数 三、总结 引言 本教程主要是围绕Cesium这一开源三维框架开展的可视化项目教程。总结一下相关从业经验,如果有什么疑问或更好的见解…

第十九章 基于逻辑回归的信用卡欺诈检测

目的 预测哪些交易记录是异常的哪些是正常的 任务流程 加载数据,观察问题针对问题给出解决方案数据集切分评估方法对比逻辑回归模型建模结果分析方案效果对比 主要解决问题 (1)在此项目中,我们首选对数据进行了观察&#xff…

C语言基本概念

简单程序的一般形式 指令 预处理器执行的命令称为指令。所有指令都是以字符#开始的,默认只占一行,每条指令的结尾没有分号或其他特殊标记 函数 函数是C语言中构建程序的构建块,事实上,C语言是函数的集合。函数分为两大类&…

Java使用注解进行参数校验

在Java中,使用注解来校验请求参数通常与Spring框架结合使用,特别是当你使用Spring MVC或Spring Boot时。Spring提供了一套完整的校验机制,通过注解来实现参数的自动校验。 以下是一个使用注解进行参数校验的示例: 1. 添加依赖 …

@RequestMapping指定请求方式的用法

RequestMapping("/depts")public Result list() {log.info("查询全部部分数据");return Result.success();}上面代码没有指定请求方式,通过postman测试,可以用GET,POST,Delete的方式调用。 要想指定请求方式…