April 3, 2026
PyG-QuickStart
核心思想:利用度矩阵进行归一化,解决节点度数差异导致的数值爆炸。
PyG 特点:
add_self_loops。适用场景:经典的半监督节点分类,对图结构比较固定的任务效果稳健。
class GCNConv(MessagePassing):
def __init__(self, in_channels, out_channels):
super().__init__(aggr='add')
self.lin = Linear(in_channels, out_channels, bias=False)
def forward(self, x, edge_index):
# 1. 添加自环
edge_index, _ = add_self_loops(edge_index, num_nodes=x.size(0))
# 2. 线性变换 (通常先做线性变换,减少 message 阶段计算量)
x = self.lin(x)
# 3. 计算归一化系数 (度矩阵 D)
row, col = edge_index
deg = degree(col, x.size(0), dtype=x.dtype)
deg_inv_sqrt = deg.pow(-0.5)
norm = deg_inv_sqrt[row] * deg_inv_sqrt[col] # 即 1/sqrt(di*dj)
return self.propagate(edge_index, x=x, norm=norm)
def message(self, x_j, norm):
# 邻居特征乘以归一化系数
return norm.view(-1, 1) * x_j
This folder contains comprehensive bioinformatics course materials, assignments, labs, and project documentation.
This folder contains comprehensive Machine Learning course materials, assignments, and project documentation.