组队学习-图神经网络 Taks 02

Torch geometric GCNConv 源码分析 Torch geometric GCNConv 源码分析公式向量形式矩阵形式GCNConv源码初始化initforwardmessageupdate参考文档 公式 向量形式 xi(k)=∑j∈N(i)∪{i}1deg⁡(i)⋅deg(j)⋅(Θ⋅xj(k−1)), \mathbf{x}_i^{(k)} = \sum_{j \in \mathcal{N}(i) \cup \{ i \}} \frac... 阅读详情

1、MessagePassing基类的运行流程

   MessagePassing类封装了“消息传递”的运行流程,可以用于构造消息传递图神经网络。主要参数定义如下:

MessagePassing(aggr="add", flow="source_to_target", node_dim=-2)(对象初始化方法):

  • aggr:定义要使用的聚合方案("add"、"mean "或 "max");

  • flow:定义消息传递的流向("source_to_target "或 "target_to_source");

  • node_dim:定义沿着哪个维度传播,默认值为-2,

 对于简单的图卷积神经网络,数学定义为:

\mathbf{x}_i^{(k)} = \sum_{j \in \mathcal{N}(i) \cup \{ i \}} \frac{1}{\sqrt{\deg(i)} \cdot \sqrt{\deg(j)}} \cdot \left( \mathbf{\Theta} \cdot \mathbf{x}_j^{(k-1)} \right),

构造过程可以分为5步:

(1)向邻接矩阵添加自循环边。

(2)对节点表征做线性变换。

(3)计算归一化系统。

(4)归一化邻接节点的表征。

(5)聚合邻接节点表征。

 

from torch_geometric.nn import MessagePassing
from torch_geometric.utils import add_self_loops, degree
import torch


class GCNConv(MessagePassing):
    def __init__(self, in_channels, out_channels):
        super(GCNConv, self).__init__(aggr='add')  # "Add" aggregation (Step 5).
        self.lin = torch.nn.Linear(in_channels, out_channels)

    def forward(self, x, edge_index):

        # Step 1 向邻接矩阵添加自循环边
      denoted by fill_value.
        edge_index, _ = add_self_loops(edge_index, num_nodes=x.size(0))

        # Step 2: 对节点表征做线性变换.
        x = self.lin(x)

        # Step 3: 计算归一化系统
        row, col = edge_index
        deg = degree(col, x.size(0), dtype=x.dtype)
        deg_inv_sqrt = deg.pow(-0.5)
        deg_inv_sqrt[deg_inv_sqrt == float('inf')] = 0
        norm = deg_inv_sqrt[row] * deg_inv_sqrt[col]

        # Step 5: 聚合邻接节点表征.
        return self.propagate(edge_index, x=x, norm=norm)

    def message(self, x_j, norm):
        # x_j has shape [E, out_channels]

        # Step 4: 归一化邻接节点的表征.
        return norm.view(-1, 1) * x_j
SpringBoot文件上传实战:MultipartFile重复读取的3种方法(附避坑指南) 本文详细介绍了SpringBoot中处理MultipartFile重复读取的3种实用方法,包括字节数组缓存法、临时文件法和流重置法,并提供了避坑指南和性能优化技巧。特别适合需要多次读取上传文件内容的开发者,帮助解决InputStream流只能读取一次的问题。 阅读详情

相关推荐

Unity机械拆装实战:5步搞定发动机模型交互式装配(附完整代码)

本文详细介绍了在Unity中实现高交互性机械拆装仿真的完整流程。以发动机模型为例,通过5个核心步骤:项目初始化与模型准备、核心交互实现、智能装配逻辑、场景管理与相机控制、进阶优化与扩展,系统讲解了从零构建交互式装配功能的方法,并提供了完整的代码示例。

weixin_28049429的博客 215

图神经网络 Task 2

消息传递图神经网络 图计算任务的关键: 为节点生成节点特征。 本节任务: 1、基于神经网络的生成节点表征的范式–消息传递范式。是一种聚合邻接节点信息来更新中心节点信息的范式。包含三个步骤: 邻接节点信息交换 邻接节点信息聚合导中心节点 据合信息变换 2、基于消息传递范式构建图神经网络 一、消息传递范式介绍 用x(k−1)i∈RF\mathbf{x}^{(k-1)}i\in\mathbb{R}^Fx(k−1)i∈RF表示(k-1)层中节点i的节点特征,ej,i∈RD\mathbf{e}{j,i} \in

chiyuhan89的博客 1164

Unidbg补环境实战:复现Shopee风控Native层运行环境

Android App风控已从HTTP层签名校验,演进为深度依赖Native层系统调用与硬件特征的多维验证。其核心原理在于通过JNI桥接Java与Native代码,调用openat、sysconf、getrandom等系统接口读取/proc、/sys、/dev等路径的真实状态,并结合SELinux策略、CPU拓扑、分区哈希等硬性指标构建设备可信画像。这种技术架构显著提升了对抗黑灰产的能力,但也对逆向分析与自动化调用提出更高要求——必须精准模拟底层环境而非仅Hook逻辑。Unidbg补环境正是为此而生:它支持

weixin_30533109的博客 637

GCNConv源码学习

pytorch_geometric中的GCNConv源码学习

tatadeeyes的博客 1585

基于STM32F103C8T6单片机设计CAN接口8路继电器控制板硬件(原理图+PCB)+软件源码

基于STM32F103C8T6单片机设计CAN接口8路继电器控制板硬件(原理图+PCB)+软件源码,仅供学习及设计参考。

GJZGRB的博客 1416

华为硬件工程师笔试题

1、基尔霍夫定理的内容是什么?(仕兰微电子)   基尔霍夫定理包括电流定律和电压定律。   电流定律(KCL):在集总电路中,任何时刻,对任一结点,所有流出结点的支路电流的代数和恒等于零。   电压定律(KVL):在集总电路中,任何时刻,沿任一回路,所有支路电压的代数和恒等于零。   2、平板电容公式(C=εS/4πkd)。(未知)   3、最基本的如三极管曲线特性。(未知)   4、描述反馈电路...

weixin_33717117的博客 2万+

图神经网络(二):消息传递范式

1.消息范式的中心节点更新 基于消息传递范式的聚合邻接节点信息来更新中心节点信息生成节点表征(节点嵌入) 以红色框为例,C的邻居节点(A,B,E,F)经过变换后聚合到节点C,C节点自己的信息与聚合来的邻居节点的信息更新得到新的C节点信息,B,D节点同理。每个节点都经历一次如此的节点更新过程 A节点的邻接节点(B,C,D)的已经发生过一次更新的节点信息,经过变换、聚合、再变换产生了A节点第二次更新的节点信息。多次更新后的节点信息就作为节点表征。 (1):神经网络的生成节点表征的操作称为节点嵌入(Node E

weixin_45774311的博客 1011

Spring Cloud 整合(一) CRUD

Springcloud 整合之 CRUDSpringcloud介绍功能概述为什么要选用Springcloud Springcloud介绍 功能概述 实现微服务 Spring Cloud为开发人员提供了工具,以快速构建分布式系统中的某些常见模式(例如,配置管理,服务发现,断路器,智能路由,微代理,控制总线,一次性令牌,全局锁,领导选举,分布式会话,群集状态)。分布式系统的协调导致样板式样,并且使用Spring Cloud开发人员可以快速站起来实现这些样板的服务和应用程序。 为什么要选用Springcloud

Kerwin-Lin的博客 1501

消息传递神经网络(MPNN)内容及代码实践

一、引言 为节点生成节点表征(Node Representation)是图计算任务成功的关键,我们要利用神经网络来学习节点表征。消息传递范式是一种聚合邻接节点信息来更新中心节点信息的范式,它将卷积算子推广到不规则数据领域,实现了图与神经网络的连接。消息传递范式因为简单、强大的特性,于是被人们广泛的使用。遵循消息传递范式的图神经网络被称为消息传递图神经网络。本节中, 首先我们将学习图神经网络生成节点表征的范式—消息传递(Message Passing)范式。 接着我们将初步分析PyG中的MessagePas

weixin_44809488的博客 1万+

新手必看:如何用PhaGCN2和vConTACT2搞定宏病毒组注释(附避坑指南)

本文为宏病毒组研究新手提供了使用PhaGCN2和vConTACT2进行病毒注释的完整实战指南。内容涵盖从Conda环境配置、软件安装、参数解析到结果解读的全流程,并重点分享了整合双工具进行交叉验证的策略与常见报错解决方案,旨在帮助研究者高效、准确地完成病毒分类注释工作。

j2k3l4的博客 797

R语言中的Gamma分布函数

在R语言中,我们可以使用最大似然估计(Maximum Likelihood Estimation,MLE)或最小二乘估计(Least Squares Estimation,LSE)等方法来估计Gamma分布的参数。本文介绍了在R语言中使用Gamma分布函数的基本操作,包括生成随机变量、计算概率密度函数和累积分布函数,以及参数估计和拟合。函数来生成Gamma分布的随机变量,计算概率密度函数(PDF)和累积分布函数(CDF),以及进行参数估计和拟合。要计算Gamma分布的累积分布函数(CDF),我们可以使用。

ByteWhiz的博客 1631

ElasticSearch:Aggregation聚合查询的入门与进阶

目录 桶(Buckets) 指标(Metrics) 将两者结合起来——聚合 常见的聚合查询 聚合查询的使用 1、简单的词频统计 2、数据按时间划分 3、数据按某个字段进行聚合后,再按时间排序 为了掌握聚合,要先了解两个主要概念: Buckets(桶):满足某个条件的文档集合。 Metrics(指标):为某个桶中的文档计算得到的统计信息。 就是这样!每个聚合只是简单地由一个或者多个桶,零个或者多个指标组合而成。可以将它粗略地转换为SQL: SELECT COUNT(field) F

熬过万丈孤独,藏下星辰大海 8877

高通平台开发系列讲解(系统篇)系统关机流程

📢本篇章主要图解高通平台系统关机流程。

内核笔记 3212

组队学习-总结 Taks 08

在参加本次组队学习之前,本人一直相对图神经网络有系统的学习,但是由于种种原因未能如愿。近年来,一直关注Datawhale的内容,正好有图神经的组队学习,于是就报名了。经过20多天的艰苦学习,在实验室有诸多的任务的情况下,仍在坚持完成组队学习的各项内容。通过Datawhale的组队学习,收获如下: (1)对图深度学习有基本的认识,对图论知识、图分类、图预测等有初了解。 (2)熟悉了PyG库的安装和使用,并在colab和linux上完成相关的作业。在完成过程中,遇到诸...

shell的专栏 287

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Datawhale组队学习-图神经网络(二)

Datawhale组队学习-图神经网络(二) Taks 02 消息传递范式 此次学习分为以下步骤: 学习图神经网络生成节点表征的范式–消息传递(Message Passing)范式。 分析PyG中的MessagePassing基类,通过继承此基类构造一个图神经网络。 以继承MessagePassing基类的GCNConv类为例,学习如何通过继承MessagePassing基类来构造图神经网络。 对MessagePassing基类进行剖析。 学习在继承MessagePassing基类的子类中覆写messag

weixin_39188290的博客 264

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

组队学习-图神经网络 Taks 04

1、InMemoryDataset基类的使用 在PyG中,我们通过继承InMemoryDataset类来自定义一个数据可全部存储到内存的数据集类。 InMemoryDataset类初始化方法参数说明: root:字符串类型,**存储数据集的文件夹的路径**。 transform:函数类型,一个数据转换函数,它接收一个`Data`对象并返回一个转换后的`Data`对象。 pre_transform:函数类型,一个数据转换函数,它接收一个`Data`对象并返回一个转换后的Data对象。 pre_..

shell的专栏 321

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

组队学习-图神经网络 Taks 03

1、知识梳理 1.1 图卷积神经网络 $$\mathbf{x}^{\prime}_i = \alpha_{i,i}\mathbf{\Theta}\mathbf{x}_{i} +\sum_{j \in \mathcal{N}(i)} \alpha_{i,j}\mathbf{\Theta}\mathbf{x}_{j},$$ 1.2 图注意力神经网络 2、使用[PyG中不同的图卷积模块在[PyG的不同数据集]上实现节点分类或回归任务。 ...

shell的专栏 434

组队学习-图神经网络 Taks 06

1、基于图同构网络(GIN)的图表征 采用GINNodeEmbedding模块对图上每一个节点做节点嵌入(Node Embedding),得到节点表征;然后对节点表征做图池化得到图的表征;最后用一层线性变换对图表征转换为对图的预测。 基于结点表征计算得到图表征的方法有: sum:对节点表征求和; mean:对节点表征求平均; max:取节点表征的最大值,对一个batch中所有节点计算节点表征各个维度的最大值; attention:基于Attention对节点表征加权求和 set2set:...

shell的专栏 1131

Datawhale组队学习-图神经网络(一)

Datawhale组队学习-图神经网络(一) Taks 01 学习书籍、工具及软件 本次学习资料为Datawhale社区在Github上的开源项目和官方文档 电脑配置为Macbook m1,操作系统为MacOS 11.4 Big Sur。所用编程环境为Anaconda 下的 Jupyter Notebook,python 3.8.8。 学习图神经网络的原因 在过去的深度学习应用中,我们接触的数据形式主要是这四种:矩阵、张量、序列(sequence)和时间序列(time series)。然而来自现实世界应

weixin_39188290的博客 639

组队学习-图神经网络 Taks 05

尝试将数据集切分成不同数量的簇进行实验,然后观察结果并进行比较。 1、设置num_parts=1500 cluster_data = ClusterData(data, num_parts=1500, recursive=False, save_dir=dataset.processed_dir) train_loader = ClusterLoader(cluster_data, batch_size=20, shuffle=True, ..

shell的专栏 646

Datawhale组队学习-图神经网络(三)

Datawhale组队学习-图神经网络(三) Taks 03 基于图神经网络的节点表征学习 此次学习分为以下步骤: 获取并分析数据集、构建一个方法用于分析节点表征的分布。 学习MLP神经网络的理论,观察MLP神经网络用于节点分类的表现,观察基于MLP神经网络学习到的节点表征的分布。 学习GCN, GAT这两个图神经网络的理论,对比它们在节点分类任务中的表现以及它们学习到的节点表征的质量。 比较MLP,GCN,GAT在节点表征学习能力上的差异。 一、准备工作 获取并分析数据集 from torch_geo

weixin_39188290的博客 333

组队学习-图神经网络 Taks 01

1、环境配置 2、data类 3、

shell的专栏 273

组队学习-图预测 Taks 07

1、知识点回顾 (1)Dataset基类简介 在PyG中,输入数据可以自定义数据类型,需要继承基类torch_geometric.data.Dataset,定义len()函数和get()函数。如果数据不需要下载,可以不定义函数download()和process(). (2)图样本封装成批和与DataLoader类 图分类和图预测的图像类型多种多样,想要将这些数据进行输入,就需要进行图样本的封装。在PyTorch Geometric中,程序将小图放在大图的对角线上构成...

shell的专栏 391

图神经网络基础--消息传递图神经网络

消息传递图神经网络

发呆的比目鱼的博客 2290

PYG图卷积中的消息传递

图卷积网络中的消息传递,在PyG中实现。

m0_52647764的博客 1002

神经网络——组合学习神经网络

文章目录向量量化LVQ网络结构与工作原理LVQ网络学习算法CPN的学习算法改进后的CPN网举例 向量量化 LVQ网络结构与工作原理 LVQ网络学习算法 CPN的学习算法 改进后的CPN网举例 ...

YiRenGengShangBuQi的博客 1271
上一篇: 组队学习-图神经网络 Taks 01
下一篇: 组队学习-图神经网络 Taks 03
shell
博客等级 码龄16年 25粉丝 24原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值