GCN之利用numpy增加自环、特征归一化

GCN是一种可直接作用于图并利用其结构信息的强大神经网络。

即使是随机初始化的两层GCN也可以生成图网络中节点的有用特征表征。

 

使用numpy编写一个有向的邻接矩阵:

import numpy as np
A = np.matrix([
    [0, 1, 0, 0],
    [0, 0, 1, 1],
    [0, 1, 0, 0],
    [1, 0, 1, 0]],
    dtype = float)

然后是抽取特征。基于每个节点的索引为其生成两个整数特征,这里是为了后续计算方便,实际的特征由具体任务而定。

X = np.matrix([[i, -i] for i in range(A.shape[0])], dtype=float)

#X:
#[[0. 0.]
#[1. -1.]
#[2. -2.]
#[3. -3.]]

现在已经建立了一个图,其邻接矩阵为A,输入特征矩阵为X,应用传播规则后:

print(A * X)
#[[1. -1.]
#[5. -5.]
#[1. -1.]
#[2. -2.]]

每个节点的表征(即每一行)是其相邻节点特征的和。

也就是说,图卷积层将每个节点表示为其相邻节点的聚合。


这时候就会有两个问题:

1.节点的聚合表征不包含它自己的特征。该表征是相邻节点的特征聚合,因此只有具有自环(self-loop)的节点才会在该聚合中包含自己的特征。

2.度大的节

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
对称归一化是一种常用的邻接矩阵归一化方法,它可以用于图卷积网络(GCN)等图神经网络模型。下面是对称归一化的解释、代码和实现方法: 1. 对称归一化的意义: 对称归一化的目的是将邻接矩阵的每个元素除以其所在行和列的度数之和的平方根。这样做的好处是可以保持特征向量的单位长度,避免在图卷积操作引入不必要的缩放。 2. 代码实现: 假设邻接矩阵为A,对称归一化后的邻接矩阵为D^(-1/2) * A * D^(-1/2),其D是对角矩阵,其对角线元素为每个节点的度数。 ```python import numpy as np def symmetric_normalize_adjacency(adjacency_matrix): # 计算每个节点的度数 degrees = np.sum(adjacency_matrix, axis=1) # 计算度数的平方根的倒数 degrees_sqrt_inv = np.power(degrees, -0.5) degrees_sqrt_inv[np.isinf(degrees_sqrt_inv)] = 0.0 # 构建对角矩阵 D_sqrt_inv = np.diag(degrees_sqrt_inv) # 对称归一化邻接矩阵 normalized_adjacency_matrix = np.dot(np.dot(D_sqrt_inv, adjacency_matrix), D_sqrt_inv) return normalized_adjacency_matrix ``` 3. 从信息聚合的角度理解GCN归一化: 对称归一化可以理解为在信息聚合过程,将每个节点的特征向量与其邻居节点的特征向量进行加权平均,权重由归一化后的邻接矩阵决定。这样可以保持特征向量的单位长度,并且更好地保留了节点之间的关系。 4. 矩阵计算角度(更好理解): 对称归一化可以通过以下三种方式实现: - 图卷积实现一: ```python normalized_adjacency_matrix = np.dot(np.dot(D_sqrt_inv, adjacency_matrix), D_sqrt_inv) ``` - 图卷积实现二: ```python normalized_adjacency_matrix = np.dot(np.dot(D_sqrt_inv, adjacency_matrix), D_sqrt_inv.T) ``` - 图卷积实现三: ```python normalized_adjacency_matrix = np.dot(np.dot(D_sqrt_inv.T, adjacency_matrix), D_sqrt_inv) ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值