# 基于飞桨复现ICML顶会模型SGC，可实现超快速网络收敛

SGC-Simplifying graph convolutional network 成为了最合适的替代品，在当今大图计算仍然没有一个最优且快的model的时候，在效果上退而求其次是不可避免的。SGC在训练效果上和原始GCN持平，但是在速度上有这不可比拟的优势，而且空间复杂度极小，具有在大图上训练的潜力。 SGC最大的创新在于省去了激活函数，从而使得多个参数合成一个，减小了时间复杂度和空间复杂度。 ```!pip install pgl
!pip install cython  ```

```import scipy.sparse as sp

degree=dataset.graph.indegree()
norm = np.zeros_like(degree, dtype="float32")
norm[degree > 0] = np.power(degree[degree > 0],-1.0)
dataset.graph.node_feat["norm"] = np.expand_dims(norm, -1)
def row_normalize(mx):
"""Row-normalize sparse matrix"""
rowsum = np.array(mx.sum(1))
r_inv = np.power(rowsum, -1).flatten()
r_inv[np.isinf(r_inv)] = 0.
r_mat_inv = sp.diags(r_inv)
mx = r_mat_inv.dot(mx)
return mx
d_inv_sqrt = np.power(row_sum, -0.5).flatten()
d_inv_sqrt[np.isinf(d_inv_sqrt)] = 0.
d_mat_inv_sqrt = sp.diags(d_inv_sqrt) ```def pre_sgc(dataset,feature,norm=None):
"""
Implementation of Simplifying graph convolutional networks (SGC)
This is an implementation of the paper SEMI-SUPERVISED CLASSIFICATION
WITH Simplifying graph convolutional networks (https://arxiv.org/abs/1902.07153).
Args:
gw: Graph wrapper object (:code:`StaticGraphWrapper` or :code:`GraphWrapper`)
feature: A tensor with shape (num_nodes, feature_size).
output: The output size for sgc.
activation: The activation for the output
name: Gcn layer names.
norm: If :code:`norm` is not None, then the feature will be normalized. Norm must
be tensor with shape (num_nodes,) and dtype float32.
Return:
A tensor with shape (num_nodes, hidden_size)
"""
num_nodes=np.shape(feature)
#print(np.shape(dataset.graph.edges))
for u in range(len(dataset.graph.edges)):
feature=dataset.graph.node_feat['words']
feature=row_normalize(feature)
if norm==True:
for i in range(args.degree):
return feature  ```  https://arxiv.org/pdf/1902.07153.pdf  