当前位置: 首页 > news >正文

PyG edge index 转换回 邻接矩阵

PyG的edge index形式是 [ ( n o d e 1 , n o d e 2 ) , ( n o d e 1 , n o d e 3 ) . . . ] [(node_1,node_2), (node_1, node_3)...] [(node1,node2),(node1,node3)...]这种edge pair。

naive

直接for循环,吧edge index里面的位置填充1:

import torch  def edge_index_to_adjacency_matrix(edge_index, num_nodes):  # 创建大小为 (num_nodes, num_nodes) 的二维张量  adjacency_matrix = torch.zeros(num_nodes, num_nodes)  # 根据边索引填充邻接矩阵的元素  for i, j in zip(*edge_index):  adjacency_matrix[i, j] = 1  adjacency_matrix[j, i] = 1  return adjacency_matrix

效率很低

利用传播机制

用PyTorch的广播机制,通过将边索引直接作为索引,一次性将对应的邻接矩阵元素设置为1,避免了使用for循环进行逐个元素的填充。这种方法在大规模图形上具有更高的效率。

import torch  def edge_index_to_adjacency_matrix(edge_index, num_nodes):  # 构建一个大小为 (num_nodes, num_nodes) 的零矩阵  adjacency_matrix = torch.zeros(num_nodes, num_nodes, dtype=torch.uint8)  # 使用索引广播机制,一次性将边索引映射到邻接矩阵的相应位置上  adjacency_matrix[edge_index[0], edge_index[1]] = 1  adjacency_matrix[edge_index[1], edge_index[0]] = 1  return adjacency_matrix

相关文章:

  • element-plus的el-tag标签关闭标签时的高亮显示逻辑
  • Ubuntu GCC切换源
  • echarts 地图迁徙与地图下钻
  • MySQL教程笔记
  • SpringBoot / Vue 对SSE的基本使用
  • springboot整合日志,并在本地查看
  • [PHP]pearProject协作系统 v2.8.14 前后端
  • Elasticsearch 集群分片出现 unassigned 其中一种原因详细还原
  • RSA 加密算法的原理与加密过程深度解析(下篇)
  • java.lang.NoClassDefFoundError: javax/servlet/Filter
  • hive sql 遇到的一些函数使用
  • elementui el-upload 上传文件
  • 引擎系统设计思路 - 用户态与系统态隔离
  • LeetCode 501. 二叉搜索树中的众数【二叉搜索树中序遍历+Morris遍历】简单
  • PHP服务器端电商API原理及示例讲解(电商接口开发/接入)
  • [PHP内核探索]PHP中的哈希表
  • CentOS 7 修改主机名
  • extract-text-webpack-plugin用法
  • Fastjson的基本使用方法大全
  • idea + plantuml 画流程图
  • Laravel核心解读--Facades
  • Mysql优化
  • Spark RDD学习: aggregate函数
  • 产品三维模型在线预览
  • 番外篇1:在Windows环境下安装JDK
  • 关于Flux,Vuex,Redux的思考
  • 今年的LC3大会没了?
  • 浅谈Golang中select的用法
  • 详解移动APP与web APP的区别
  • 想使用 MongoDB ,你应该了解这8个方面!
  • 智能合约Solidity教程-事件和日志(一)
  • 【云吞铺子】性能抖动剖析(二)
  • ​ubuntu下安装kvm虚拟机
  • #数学建模# 线性规划问题的Matlab求解
  • (java)关于Thread的挂起和恢复
  • (二)c52学习之旅-简单了解单片机
  • (非本人原创)我们工作到底是为了什么?​——HP大中华区总裁孙振耀退休感言(r4笔记第60天)...
  • (附源码)spring boot网络空间安全实验教学示范中心网站 毕业设计 111454
  • (附源码)springboot 个人网页的网站 毕业设计031623
  • (附源码)计算机毕业设计高校学生选课系统
  • (三)centos7案例实战—vmware虚拟机硬盘挂载与卸载
  • (五) 一起学 Unix 环境高级编程 (APUE) 之 进程环境
  • (转)清华学霸演讲稿:永远不要说你已经尽力了
  • (转)全文检索技术学习(三)——Lucene支持中文分词
  • ./和../以及/和~之间的区别
  • .NET/C# 中你可以在代码中写多个 Main 函数,然后按需要随时切换
  • .NET导入Excel数据
  • .net的socket示例
  • .Net高阶异常处理第二篇~~ dump进阶之MiniDumpWriter
  • /etc/motd and /etc/issue
  • @converter 只能用mysql吗_python-MySQLConverter对象没有mysql-connector属性’...
  • [ 蓝桥杯Web真题 ]-Markdown 文档解析
  • [C++]priority_queue的介绍及模拟实现
  • [C++11 多线程同步] --- 条件变量的那些坑【条件变量信号丢失和条件变量虚假唤醒(spurious wakeup)】
  • [C语言][C++][时间复杂度详解分析]二分查找——杨氏矩阵查找数字详解!!!