基础知识

图的定义

图表示物件与物件之间的关系的数学对象,是图论的基本研究对象。

举个例子,一个简单的图可能是这样:

节点(node)用红色标出,通过黑色的边(edge)连接。

图可用于表示:

  • 社交网络
  • 网页
  • 生物网络

我们首先在我们的笔记本中导入第一个预构建的图:

图的基本表示方法

  • 图 G=(V, E) 由下列要素构成:
  • 一组节点(也称为 verticle)V=1,…,n
  • 一组 E⊆V×V
  • 边 (i,j) ∈ E 连接了节点 i 和 j
  • i 和 j 被称为相邻节点(neighbor)
  • 节点的(degree)是指相邻节点的数量

节点、边和度的示意图

  • 如果一个图的所有节点都有 n-1 个相邻节点,则该图是完备的(complete)。也就是说所有节点都具备所有可能的连接方式。
  • 从 i 到 j 的路径(path)是指从 i 到达 j 的边的序列。该路径的长度(length)等于所经过的边的数量。
  • 图的直径(diameter)是指连接任意两个节点的所有最短路径中最长路径的长度。

举个例子,在这个案例中,我们可以计算出一些连接任意两个节点的最短路径。该图的直径为 3,因为没有任意两个节点之间的最短路径的长度超过 3。

一个直径为 3 的图

  • 测地路径(geodesic path)是指两个节点之间的最短路径。
  • 如果所有节点都可通过某个路径连接到彼此,则它们构成一个连通分支(connected component)。如果一个图仅有一个连通分支,则该图是连通的(connected)

举个例子,下面是一个有两个不同连通分支的图:

一个有两个连通分支的图

  • 如果一个图的边是有顺序的配对,则该图是有向的(directed)。i 的入度(in-degree)是指向 i 的边的数量,出度(out-degree)是远离 i 的边的数量

有向图

  • 如果可以回到一个给定节点,则该图是有环的(cyclic)。相对地,如果至少有一个节点无法回到,则该图就是无环的(acyclic)。
  • 图可以被加权(weighted),即在节点或关系上施加权重。
  • 如果一个图的边数量相比于节点数量较小,则该图是稀疏的(sparse)。相对地,如果节点之间的边非常多,则该图是密集的(dense)

Neo4J 的关于图算法的书给出了清晰明了的总结:

总结(来自 Neo4J Graph Book)

回到我们的空手道俱乐部图

代码实战GCN+GAT

本次作业内容:实现GCN模型和GAT 模型的send和recv 函数。

# 安装依赖
# !pip install paddlepaddle==1.8.5
!pip install pgl -q

1. GCN模型

请同学们完成以下send 函数和 recv 函数对应的选择题。如果不太懂PaddlePaddle的API,可以直接到我们的官网查看相关的用法。

注:这里我们给出的是简化版本的 GCN 模型,完整的 GCN 代码可查看: https://github.com/PaddlePaddle/PGL/blob/main/pgl/layers/conv.py#L27

%%writefile userdef_gcn.py
import paddle.fluid as fluiddef gcn_layer(gw, feature, hidden_size, activation, name, norm=None):# send函数def send_func(src_feat, dst_feat, edge_feat):'''请完成填空提示:src_feat 为源节点特征src_feat { "h":  Tensor形状为 [边数目, hidden_size]}dst_feat 为目标节点特征dst_feat{ "h":  Tensor形状为 [边数目, hidden_size]}由于本题目没有边特征,edge_feat为 None'''# 问题1:下列两个feature,我们选择哪个ans1 = "A" # "A" or "B" if ans1 == "A":feat = src_feat["h"]elif ans1 == "B":feat = dst_feat["h"]return feat# recv函数def recv_func(msg):'''请完成填空提示:1. 使用到的函数:fluid.layers.sequence_pool(x, pool_type)2. 接受到的消息是一个变长Tensor,在Paddle里被称为LodTensor例如: msg = [ [1, 2],      # 节点0 接受的特征[1],         # 节点1 接受的特征[2, 3, 4]    # 节点2 接受的特征]对于不定长Tensor,我们可以使用一系列的sequence操作。例如sequence_pool例如: 对上述msg进行sequence_pool求和的操作, 我们会得到msg = [ [3],      # 节点0 接受的特征[1],         # 节点1 接受的特征[9]    # 节点2 接受的特征]'''# 问题2:在 GCN里面,我们的 Recv 函数是ans = "A"  # "A" or "B" or "C"if ans == "A":return fluid.layers.sequence_pool(msg, "sum")elif ans == "B":return fluid.layers.sequence_pool(msg, "average")elif ans == "C":return fluid.layers.sequence_pool(msg, "max")# 消息传递机制执行过程msg = gw.send(send_func, nfeat_list=[("h", feature)]) output = gw.recv(msg, recv_func)# 通过以activation为激活函数的全连接输出层output = fluid.layers.fc(output,size=hidden_size,bias_attr=False,act=activation,name=name)return output
Writing userdef_gcn.py
# (GPU版) 可以自己调整超参数,比如学习率,epoch数,看看结果变化如何
!python check_on_cora.py  --epoch 200 --hidden_size 16 --learning_rate 0.01 --dropout 0.5 --use_cuda
W1126 16:40:20.019381   115 device_context.cc:252] Please NOTE: device: 0, CUDA Capability: 70, Driver API Version: 11.0, Runtime API Version: 9.0
W1126 16:40:20.024101   115 device_context.cc:260] device: 0, cuDNN Version: 7.6.
开始训练 Cora数据集 200 Epoch
Epoch 0 训练集 Loss: 1.944218 训练集 准确率: 0.171429 验证集 Loss: 1.927032 验证集 准确率: 0.293333
Epoch 1 训练集 Loss: 1.900358 训练集 准确率: 0.385714 验证集 Loss: 1.902822 验证集 准确率: 0.326667
Epoch 2 训练集 Loss: 1.857610 训练集 准确率: 0.350000 验证集 Loss: 1.872902 验证集 准确率: 0.330000
Epoch 3 训练集 Loss: 1.800070 训练集 准确率: 0.421429 验证集 Loss: 1.841988 验证集 准确率: 0.320000
Epoch 4 训练集 Loss: 1.755036 训练集 准确率: 0.392857 验证集 Loss: 1.810849 验证集 准确率: 0.320000
Epoch 5 训练集 Loss: 1.722358 训练集 准确率: 0.378571 验证集 Loss: 1.779641 验证集 准确率: 0.326667
Epoch 6 训练集 Loss: 1.680726 训练集 准确率: 0.400000 验证集 Loss: 1.748443 验证集 准确率: 0.323333
Epoch 7 训练集 Loss: 1.613552 训练集 准确率: 0.400000 验证集 Loss: 1.716620 验证集 准确率: 0.343333
Epoch 8 训练集 Loss: 1.540508 训练集 准确率: 0.435714 验证集 Loss: 1.683405 验证集 准确率: 0.356667
Epoch 9 训练集 Loss: 1.519044 训练集 准确率: 0.442857 验证集 Loss: 1.649374 验证集 准确率: 0.406667
Epoch 10 训练集 Loss: 1.477401 训练集 准确率: 0.464286 验证集 Loss: 1.614970 验证集 准确率: 0.453333
Epoch 11 训练集 Loss: 1.420923 训练集 准确率: 0.457143 验证集 Loss: 1.581093 验证集 准确率: 0.480000
Epoch 12 训练集 Loss: 1.390323 训练集 准确率: 0.564286 验证集 Loss: 1.547482 验证集 准确率: 0.500000
Epoch 13 训练集 Loss: 1.359235 训练集 准确率: 0.571429 验证集 Loss: 1.513961 验证集 准确率: 0.526667
Epoch 14 训练集 Loss: 1.235021 训练集 准确率: 0.664286 验证集 Loss: 1.480707 验证集 准确率: 0.563333
Epoch 15 训练集 Loss: 1.253399 训练集 准确率: 0.671429 验证集 Loss: 1.447994 验证集 准确率: 0.600000
Epoch 16 训练集 Loss: 1.246433 训练集 准确率: 0.671429 验证集 Loss: 1.416147 验证集 准确率: 0.616667
Epoch 17 训练集 Loss: 1.161656 训练集 准确率: 0.707143 验证集 Loss: 1.384710 验证集 准确率: 0.643333
Epoch 18 训练集 Loss: 1.166656 训练集 准确率: 0.728571 验证集 Loss: 1.354504 验证集 准确率: 0.663333
Epoch 19 训练集 Loss: 1.079085 训练集 准确率: 0.757143 验证集 Loss: 1.324195 验证集 准确率: 0.673333
Epoch 20 训练集 Loss: 1.084807 训练集 准确率: 0.771429 验证集 Loss: 1.293840 验证集 准确率: 0.673333
Epoch 21 训练集 Loss: 0.998605 训练集 准确率: 0.771429 验证集 Loss: 1.264240 验证集 准确率: 0.683333
Epoch 22 训练集 Loss: 0.989750 训练集 准确率: 0.792857 验证集 Loss: 1.235804 验证集 准确率: 0.690000
Epoch 23 训练集 Loss: 0.961830 训练集 准确率: 0.778571 验证集 Loss: 1.208299 验证集 准确率: 0.706667
Epoch 24 训练集 Loss: 0.935203 训练集 准确率: 0.778571 验证集 Loss: 1.182300 验证集 准确率: 0.716667
Epoch 25 训练集 Loss: 0.933135 训练集 准确率: 0.835714 验证集 Loss: 1.157896 验证集 准确率: 0.720000
Epoch 26 训练集 Loss: 0.858765 训练集 准确率: 0.835714 验证集 Loss: 1.134096 验证集 准确率: 0.736667
Epoch 27 训练集 Loss: 0.862911 训练集 准确率: 0.828571 验证集 Loss: 1.112802 验证集 准确率: 0.740000
Epoch 28 训练集 Loss: 0.786741 训练集 准确率: 0.871429 验证集 Loss: 1.092712 验证集 准确率: 0.740000
Epoch 29 训练集 Loss: 0.774144 训练集 准确率: 0.828571 验证集 Loss: 1.075144 验证集 准确率: 0.736667
Epoch 30 训练集 Loss: 0.764563 训练集 准确率: 0.835714 验证集 Loss: 1.058932 验证集 准确率: 0.743333
Epoch 31 训练集 Loss: 0.784508 训练集 准确率: 0.828571 验证集 Loss: 1.044483 验证集 准确率: 0.746667
Epoch 32 训练集 Loss: 0.704665 训练集 准确率: 0.842857 验证集 Loss: 1.029460 验证集 准确率: 0.740000
Epoch 33 训练集 Loss: 0.683590 训练集 准确率: 0.907143 验证集 Loss: 1.014828 验证集 准确率: 0.740000
Epoch 34 训练集 Loss: 0.697061 训练集 准确率: 0.821429 验证集 Loss: 1.000751 验证集 准确率: 0.743333
Epoch 35 训练集 Loss: 0.678008 训练集 准确率: 0.842857 验证集 Loss: 0.989370 验证集 准确率: 0.736667
Epoch 36 训练集 Loss: 0.673186 训练集 准确率: 0.850000 验证集 Loss: 0.977907 验证集 准确率: 0.736667
Epoch 37 训练集 Loss: 0.598531 训练集 准确率: 0.907143 验证集 Loss: 0.967200 验证集 准确率: 0.740000
Epoch 38 训练集 Loss: 0.650057 训练集 准确率: 0.871429 验证集 Loss: 0.956965 验证集 准确率: 0.740000
Epoch 39 训练集 Loss: 0.568388 训练集 准确率: 0.892857 验证集 Loss: 0.947113 验证集 准确率: 0.743333
Epoch 40 训练集 Loss: 0.615946 训练集 准确率: 0.842857 验证集 Loss: 0.939126 验证集 准确率: 0.743333
Epoch 41 训练集 Loss: 0.563034 训练集 准确率: 0.900000 验证集 Loss: 0.931567 验证集 准确率: 0.740000
Epoch 42 训练集 Loss: 0.501417 训练集 准确率: 0.900000 验证集 Loss: 0.923820 验证集 准确率: 0.740000
Epoch 43 训练集 Loss: 0.520591 训练集 准确率: 0.907143 验证集 Loss: 0.915592 验证集 准确率: 0.740000
Epoch 44 训练集 Loss: 0.529696 训练集 准确率: 0.892857 验证集 Loss: 0.906578 验证集 准确率: 0.746667
Epoch 45 训练集 Loss: 0.518027 训练集 准确率: 0.928571 验证集 Loss: 0.897827 验证集 准确率: 0.750000
Epoch 46 训练集 Loss: 0.557510 训练集 准确率: 0.864286 验证集 Loss: 0.890289 验证集 准确率: 0.746667
Epoch 47 训练集 Loss: 0.510743 训练集 准确率: 0.921429 验证集 Loss: 0.883362 验证集 准确率: 0.750000
Epoch 48 训练集 Loss: 0.457422 训练集 准确率: 0.878571 验证集 Loss: 0.877959 验证集 准确率: 0.756667
Epoch 49 训练集 Loss: 0.461855 训练集 准确率: 0.921429 验证集 Loss: 0.872136 验证集 准确率: 0.760000
Epoch 50 训练集 Loss: 0.501126 训练集 准确率: 0.892857 验证集 Loss: 0.867193 验证集 准确率: 0.760000
Epoch 51 训练集 Loss: 0.442674 训练集 准确率: 0.892857 验证集 Loss: 0.862586 验证集 准确率: 0.760000
Epoch 52 训练集 Loss: 0.507517 训练集 准确率: 0.914286 验证集 Loss: 0.858356 验证集 准确率: 0.760000
Epoch 53 训练集 Loss: 0.394315 训练集 准确率: 0.921429 验证集 Loss: 0.853917 验证集 准确率: 0.763333
Epoch 54 训练集 Loss: 0.480605 训练集 准确率: 0.871429 验证集 Loss: 0.848354 验证集 准确率: 0.763333
Epoch 55 训练集 Loss: 0.468291 训练集 准确率: 0.871429 验证集 Loss: 0.843532 验证集 准确率: 0.763333
Epoch 56 训练集 Loss: 0.405199 训练集 准确率: 0.914286 验证集 Loss: 0.839045 验证集 准确率: 0.766667
Epoch 57 训练集 Loss: 0.447533 训练集 准确率: 0.900000 验证集 Loss: 0.835046 验证集 准确率: 0.770000
Epoch 58 训练集 Loss: 0.426467 训练集 准确率: 0.935714 验证集 Loss: 0.830045 验证集 准确率: 0.773333
Epoch 59 训练集 Loss: 0.429054 训练集 准确率: 0.907143 验证集 Loss: 0.825829 验证集 准确率: 0.773333
Epoch 60 训练集 Loss: 0.393568 训练集 准确率: 0.921429 验证集 Loss: 0.821354 验证集 准确率: 0.776667
Epoch 61 训练集 Loss: 0.478284 训练集 准确率: 0.907143 验证集 Loss: 0.817604 验证集 准确率: 0.776667
Epoch 62 训练集 Loss: 0.446290 训练集 准确率: 0.871429 验证集 Loss: 0.815319 验证集 准确率: 0.773333
Epoch 63 训练集 Loss: 0.390211 训练集 准确率: 0.907143 验证集 Loss: 0.813901 验证集 准确率: 0.773333
Epoch 64 训练集 Loss: 0.341339 训练集 准确率: 0.942857 验证集 Loss: 0.812257 验证集 准确率: 0.773333
Epoch 65 训练集 Loss: 0.439673 训练集 准确率: 0.907143 验证集 Loss: 0.811588 验证集 准确率: 0.776667
Epoch 66 训练集 Loss: 0.432683 训练集 准确率: 0.907143 验证集 Loss: 0.811117 验证集 准确率: 0.780000
Epoch 67 训练集 Loss: 0.427066 训练集 准确率: 0.892857 验证集 Loss: 0.811535 验证集 准确率: 0.780000
Epoch 68 训练集 Loss: 0.421463 训练集 准确率: 0.878571 验证集 Loss: 0.810847 验证集 准确率: 0.780000
Epoch 69 训练集 Loss: 0.370736 训练集 准确率: 0.914286 验证集 Loss: 0.809402 验证集 准确率: 0.780000
Epoch 70 训练集 Loss: 0.389427 训练集 准确率: 0.921429 验证集 Loss: 0.808709 验证集 准确率: 0.776667
Epoch 71 训练集 Loss: 0.428974 训练集 准确率: 0.864286 验证集 Loss: 0.806449 验证集 准确率: 0.776667
Epoch 72 训练集 Loss: 0.362774 训练集 准确率: 0.921429 验证集 Loss: 0.802871 验证集 准确率: 0.776667
Epoch 73 训练集 Loss: 0.392831 训练集 准确率: 0.878571 验证集 Loss: 0.799416 验证集 准确率: 0.776667
Epoch 74 训练集 Loss: 0.412400 训练集 准确率: 0.914286 验证集 Loss: 0.796824 验证集 准确率: 0.780000
Epoch 75 训练集 Loss: 0.305906 训练集 准确率: 0.935714 验证集 Loss: 0.794945 验证集 准确率: 0.780000
Epoch 76 训练集 Loss: 0.376779 训练集 准确率: 0.900000 验证集 Loss: 0.793729 验证集 准确率: 0.780000
Epoch 77 训练集 Loss: 0.412209 训练集 准确率: 0.907143 验证集 Loss: 0.793320 验证集 准确率: 0.780000
Epoch 78 训练集 Loss: 0.391707 训练集 准确率: 0.907143 验证集 Loss: 0.793867 验证集 准确率: 0.783333
Epoch 79 训练集 Loss: 0.376050 训练集 准确率: 0.914286 验证集 Loss: 0.794721 验证集 准确率: 0.783333
Epoch 80 训练集 Loss: 0.314212 训练集 准确率: 0.928571 验证集 Loss: 0.795477 验证集 准确率: 0.783333
Epoch 81 训练集 Loss: 0.380075 训练集 准确率: 0.900000 验证集 Loss: 0.795540 验证集 准确率: 0.783333
Epoch 82 训练集 Loss: 0.381306 训练集 准确率: 0.892857 验证集 Loss: 0.795035 验证集 准确率: 0.783333
Epoch 83 训练集 Loss: 0.344445 训练集 准确率: 0.907143 验证集 Loss: 0.794019 验证集 准确率: 0.783333
Epoch 84 训练集 Loss: 0.352901 训练集 准确率: 0.892857 验证集 Loss: 0.793929 验证集 准确率: 0.783333
Epoch 85 训练集 Loss: 0.325215 训练集 准确率: 0.935714 验证集 Loss: 0.793042 验证集 准确率: 0.783333
Epoch 86 训练集 Loss: 0.342691 训练集 准确率: 0.921429 验证集 Loss: 0.791763 验证集 准确率: 0.783333
Epoch 87 训练集 Loss: 0.371270 训练集 准确率: 0.907143 验证集 Loss: 0.794928 验证集 准确率: 0.783333
Epoch 88 训练集 Loss: 0.381075 训练集 准确率: 0.892857 验证集 Loss: 0.798194 验证集 准确率: 0.783333
Epoch 89 训练集 Loss: 0.361371 训练集 准确率: 0.885714 验证集 Loss: 0.800999 验证集 准确率: 0.780000
Epoch 90 训练集 Loss: 0.353289 训练集 准确率: 0.921429 验证集 Loss: 0.802068 验证集 准确率: 0.780000
Epoch 91 训练集 Loss: 0.371959 训练集 准确率: 0.914286 验证集 Loss: 0.801978 验证集 准确率: 0.780000
Epoch 92 训练集 Loss: 0.358055 训练集 准确率: 0.914286 验证集 Loss: 0.800819 验证集 准确率: 0.783333
Epoch 93 训练集 Loss: 0.322584 训练集 准确率: 0.921429 验证集 Loss: 0.799262 验证集 准确率: 0.783333
Epoch 94 训练集 Loss: 0.331480 训练集 准确率: 0.914286 验证集 Loss: 0.795731 验证集 准确率: 0.783333
Epoch 95 训练集 Loss: 0.334194 训练集 准确率: 0.928571 验证集 Loss: 0.792514 验证集 准确率: 0.783333
Epoch 96 训练集 Loss: 0.381965 训练集 准确率: 0.921429 验证集 Loss: 0.790721 验证集 准确率: 0.783333
Epoch 97 训练集 Loss: 0.259573 训练集 准确率: 0.935714 验证集 Loss: 0.790504 验证集 准确率: 0.786667
Epoch 98 训练集 Loss: 0.293773 训练集 准确率: 0.921429 验证集 Loss: 0.790967 验证集 准确率: 0.786667
Epoch 99 训练集 Loss: 0.291115 训练集 准确率: 0.935714 验证集 Loss: 0.791697 验证集 准确率: 0.786667
Epoch 100 训练集 Loss: 0.272826 训练集 准确率: 0.935714 验证集 Loss: 0.792389 验证集 准确率: 0.786667
Epoch 101 训练集 Loss: 0.305797 训练集 准确率: 0.921429 验证集 Loss: 0.792878 验证集 准确率: 0.783333
Epoch 102 训练集 Loss: 0.307592 训练集 准确率: 0.935714 验证集 Loss: 0.793024 验证集 准确率: 0.786667
Epoch 103 训练集 Loss: 0.269839 训练集 准确率: 0.942857 验证集 Loss: 0.792914 验证集 准确率: 0.786667
Epoch 104 训练集 Loss: 0.289469 训练集 准确率: 0.935714 验证集 Loss: 0.792155 验证集 准确率: 0.786667
Epoch 105 训练集 Loss: 0.304073 训练集 准确率: 0.907143 验证集 Loss: 0.791603 验证集 准确率: 0.790000
Epoch 106 训练集 Loss: 0.318628 训练集 准确率: 0.928571 验证集 Loss: 0.790071 验证集 准确率: 0.793333
Epoch 107 训练集 Loss: 0.329963 训练集 准确率: 0.885714 验证集 Loss: 0.788758 验证集 准确率: 0.790000
Epoch 108 训练集 Loss: 0.275024 训练集 准确率: 0.942857 验证集 Loss: 0.786559 验证集 准确率: 0.790000
Epoch 109 训练集 Loss: 0.352575 训练集 准确率: 0.914286 验证集 Loss: 0.784906 验证集 准确率: 0.790000
Epoch 110 训练集 Loss: 0.297380 训练集 准确率: 0.935714 验证集 Loss: 0.783611 验证集 准确率: 0.793333
Epoch 111 训练集 Loss: 0.270334 训练集 准确率: 0.942857 验证集 Loss: 0.782397 验证集 准确率: 0.790000
Epoch 112 训练集 Loss: 0.304933 训练集 准确率: 0.935714 验证集 Loss: 0.781133 验证集 准确率: 0.790000
Epoch 113 训练集 Loss: 0.296636 训练集 准确率: 0.921429 验证集 Loss: 0.780507 验证集 准确率: 0.790000
Epoch 114 训练集 Loss: 0.303959 训练集 准确率: 0.921429 验证集 Loss: 0.780891 验证集 准确率: 0.790000
Epoch 115 训练集 Loss: 0.384965 训练集 准确率: 0.871429 验证集 Loss: 0.781516 验证集 准确率: 0.790000
Epoch 116 训练集 Loss: 0.289037 训练集 准确率: 0.950000 验证集 Loss: 0.783803 验证集 准确率: 0.786667
Epoch 117 训练集 Loss: 0.262118 训练集 准确率: 0.935714 验证集 Loss: 0.785396 验证集 准确率: 0.786667
Epoch 118 训练集 Loss: 0.243943 训练集 准确率: 0.942857 验证集 Loss: 0.785380 验证集 准确率: 0.786667
Epoch 119 训练集 Loss: 0.279480 训练集 准确率: 0.935714 验证集 Loss: 0.785677 验证集 准确率: 0.786667
Epoch 120 训练集 Loss: 0.281972 训练集 准确率: 0.935714 验证集 Loss: 0.785449 验证集 准确率: 0.786667
Epoch 121 训练集 Loss: 0.260355 训练集 准确率: 0.921429 验证集 Loss: 0.785026 验证集 准确率: 0.786667
Epoch 122 训练集 Loss: 0.239752 训练集 准确率: 0.957143 验证集 Loss: 0.783866 验证集 准确率: 0.786667
Epoch 123 训练集 Loss: 0.304618 训练集 准确率: 0.914286 验证集 Loss: 0.783574 验证集 准确率: 0.786667
Epoch 124 训练集 Loss: 0.298619 训练集 准确率: 0.928571 验证集 Loss: 0.782880 验证集 准确率: 0.790000
Epoch 125 训练集 Loss: 0.235711 训练集 准确率: 0.957143 验证集 Loss: 0.782250 验证集 准确率: 0.790000
Epoch 126 训练集 Loss: 0.277152 训练集 准确率: 0.928571 验证集 Loss: 0.783073 验证集 准确率: 0.790000
Epoch 127 训练集 Loss: 0.260501 训练集 准确率: 0.928571 验证集 Loss: 0.784245 验证集 准确率: 0.786667
Epoch 128 训练集 Loss: 0.345191 训练集 准确率: 0.900000 验证集 Loss: 0.785555 验证集 准确率: 0.790000
Epoch 129 训练集 Loss: 0.346778 训练集 准确率: 0.928571 验证集 Loss: 0.785802 验证集 准确率: 0.790000
Epoch 130 训练集 Loss: 0.263824 训练集 准确率: 0.935714 验证集 Loss: 0.783916 验证集 准确率: 0.790000
Epoch 131 训练集 Loss: 0.288951 训练集 准确率: 0.935714 验证集 Loss: 0.781772 验证集 准确率: 0.790000
Epoch 132 训练集 Loss: 0.289153 训练集 准确率: 0.928571 验证集 Loss: 0.780313 验证集 准确率: 0.790000
Epoch 133 训练集 Loss: 0.296175 训练集 准确率: 0.914286 验证集 Loss: 0.779361 验证集 准确率: 0.793333
Epoch 134 训练集 Loss: 0.306836 训练集 准确率: 0.914286 验证集 Loss: 0.778941 验证集 准确率: 0.793333
Epoch 135 训练集 Loss: 0.300510 训练集 准确率: 0.914286 验证集 Loss: 0.779040 验证集 准确率: 0.793333
Epoch 136 训练集 Loss: 0.310312 训练集 准确率: 0.921429 验证集 Loss: 0.779748 验证集 准确率: 0.793333
Epoch 137 训练集 Loss: 0.275262 训练集 准确率: 0.921429 验证集 Loss: 0.781388 验证集 准确率: 0.793333
Epoch 138 训练集 Loss: 0.233508 训练集 准确率: 0.950000 验证集 Loss: 0.782833 验证集 准确率: 0.793333
Epoch 139 训练集 Loss: 0.250707 训练集 准确率: 0.928571 验证集 Loss: 0.784560 验证集 准确率: 0.790000
Epoch 140 训练集 Loss: 0.277022 训练集 准确率: 0.907143 验证集 Loss: 0.786852 验证集 准确率: 0.790000
Epoch 141 训练集 Loss: 0.226813 训练集 准确率: 0.942857 验证集 Loss: 0.789536 验证集 准确率: 0.786667
Epoch 142 训练集 Loss: 0.436668 训练集 准确率: 0.921429 验证集 Loss: 0.793568 验证集 准确率: 0.783333
Epoch 143 训练集 Loss: 0.311576 训练集 准确率: 0.928571 验证集 Loss: 0.797495 验证集 准确率: 0.783333
Epoch 144 训练集 Loss: 0.254358 训练集 准确率: 0.928571 验证集 Loss: 0.799260 验证集 准确率: 0.780000
Epoch 145 训练集 Loss: 0.310247 训练集 准确率: 0.907143 验证集 Loss: 0.798740 验证集 准确率: 0.780000
Epoch 146 训练集 Loss: 0.253633 训练集 准确率: 0.935714 验证集 Loss: 0.798324 验证集 准确率: 0.780000
Epoch 147 训练集 Loss: 0.267790 训练集 准确率: 0.935714 验证集 Loss: 0.797888 验证集 准确率: 0.783333
Epoch 148 训练集 Loss: 0.304484 训练集 准确率: 0.935714 验证集 Loss: 0.796282 验证集 准确率: 0.783333
Epoch 149 训练集 Loss: 0.355690 训练集 准确率: 0.892857 验证集 Loss: 0.795025 验证集 准确率: 0.783333
Epoch 150 训练集 Loss: 0.226215 训练集 准确率: 0.964286 验证集 Loss: 0.794657 验证集 准确率: 0.783333
Epoch 151 训练集 Loss: 0.268380 训练集 准确率: 0.928571 验证集 Loss: 0.795440 验证集 准确率: 0.783333
Epoch 152 训练集 Loss: 0.303103 训练集 准确率: 0.914286 验证集 Loss: 0.795419 验证集 准确率: 0.786667
Epoch 153 训练集 Loss: 0.240636 训练集 准确率: 0.942857 验证集 Loss: 0.793113 验证集 准确率: 0.790000
Epoch 154 训练集 Loss: 0.313064 训练集 准确率: 0.885714 验证集 Loss: 0.788932 验证集 准确率: 0.790000
Epoch 155 训练集 Loss: 0.299830 训练集 准确率: 0.885714 验证集 Loss: 0.786059 验证集 准确率: 0.790000
Epoch 156 训练集 Loss: 0.309483 训练集 准确率: 0.914286 验证集 Loss: 0.784847 验证集 准确率: 0.790000
Epoch 157 训练集 Loss: 0.281364 训练集 准确率: 0.942857 验证集 Loss: 0.785340 验证集 准确率: 0.790000
Epoch 158 训练集 Loss: 0.276543 训练集 准确率: 0.928571 验证集 Loss: 0.785727 验证集 准确率: 0.790000
Epoch 159 训练集 Loss: 0.243569 训练集 准确率: 0.964286 验证集 Loss: 0.786399 验证集 准确率: 0.790000
Epoch 160 训练集 Loss: 0.274873 训练集 准确率: 0.935714 验证集 Loss: 0.786549 验证集 准确率: 0.790000
Epoch 161 训练集 Loss: 0.267654 训练集 准确率: 0.950000 验证集 Loss: 0.783586 验证集 准确率: 0.790000
Epoch 162 训练集 Loss: 0.261879 训练集 准确率: 0.914286 验证集 Loss: 0.780565 验证集 准确率: 0.790000
Epoch 163 训练集 Loss: 0.297120 训练集 准确率: 0.907143 验证集 Loss: 0.779089 验证集 准确率: 0.790000
Epoch 164 训练集 Loss: 0.301122 训练集 准确率: 0.907143 验证集 Loss: 0.778487 验证集 准确率: 0.793333
Epoch 165 训练集 Loss: 0.286385 训练集 准确率: 0.914286 验证集 Loss: 0.778131 验证集 准确率: 0.793333
Epoch 166 训练集 Loss: 0.259965 训练集 准确率: 0.928571 验证集 Loss: 0.779096 验证集 准确率: 0.793333
Epoch 167 训练集 Loss: 0.277317 训练集 准确率: 0.921429 验证集 Loss: 0.779020 验证集 准确率: 0.793333
Epoch 168 训练集 Loss: 0.236150 训练集 准确率: 0.957143 验证集 Loss: 0.778878 验证集 准确率: 0.793333
Epoch 169 训练集 Loss: 0.285637 训练集 准确率: 0.935714 验证集 Loss: 0.778885 验证集 准确率: 0.793333
Epoch 170 训练集 Loss: 0.260228 训练集 准确率: 0.950000 验证集 Loss: 0.779408 验证集 准确率: 0.793333
Epoch 171 训练集 Loss: 0.261489 训练集 准确率: 0.935714 验证集 Loss: 0.780952 验证集 准确率: 0.790000
Epoch 172 训练集 Loss: 0.327919 训练集 准确率: 0.900000 验证集 Loss: 0.781909 验证集 准确率: 0.796667
Epoch 173 训练集 Loss: 0.232662 训练集 准确率: 0.950000 验证集 Loss: 0.782525 验证集 准确率: 0.796667
Epoch 174 训练集 Loss: 0.294207 训练集 准确率: 0.928571 验证集 Loss: 0.783245 验证集 准确率: 0.796667
Epoch 175 训练集 Loss: 0.227833 训练集 准确率: 0.950000 验证集 Loss: 0.783265 验证集 准确率: 0.796667
Epoch 176 训练集 Loss: 0.305963 训练集 准确率: 0.928571 验证集 Loss: 0.784218 验证集 准确率: 0.793333
Epoch 177 训练集 Loss: 0.335209 训练集 准确率: 0.885714 验证集 Loss: 0.784618 验证集 准确率: 0.793333
Epoch 178 训练集 Loss: 0.223546 训练集 准确率: 0.950000 验证集 Loss: 0.783587 验证集 准确率: 0.793333
Epoch 179 训练集 Loss: 0.232845 训练集 准确率: 0.942857 验证集 Loss: 0.782569 验证集 准确率: 0.793333
Epoch 180 训练集 Loss: 0.272228 训练集 准确率: 0.942857 验证集 Loss: 0.783934 验证集 准确率: 0.790000
Epoch 181 训练集 Loss: 0.277856 训练集 准确率: 0.914286 验证集 Loss: 0.782934 验证集 准确率: 0.790000
Epoch 182 训练集 Loss: 0.269883 训练集 准确率: 0.914286 验证集 Loss: 0.783111 验证集 准确率: 0.790000
Epoch 183 训练集 Loss: 0.272271 训练集 准确率: 0.900000 验证集 Loss: 0.783529 验证集 准确率: 0.790000
Epoch 184 训练集 Loss: 0.221922 训练集 准确率: 0.964286 验证集 Loss: 0.784464 验证集 准确率: 0.790000
Epoch 185 训练集 Loss: 0.293366 训练集 准确率: 0.921429 验证集 Loss: 0.786516 验证集 准确率: 0.786667
Epoch 186 训练集 Loss: 0.272615 训练集 准确率: 0.921429 验证集 Loss: 0.789129 验证集 准确率: 0.786667
Epoch 187 训练集 Loss: 0.258354 训练集 准确率: 0.921429 验证集 Loss: 0.791223 验证集 准确率: 0.786667
Epoch 188 训练集 Loss: 0.266232 训练集 准确率: 0.928571 验证集 Loss: 0.793611 验证集 准确率: 0.786667
Epoch 189 训练集 Loss: 0.248989 训练集 准确率: 0.928571 验证集 Loss: 0.794361 验证集 准确率: 0.790000
Epoch 190 训练集 Loss: 0.208623 训练集 准确率: 0.964286 验证集 Loss: 0.793680 验证集 准确率: 0.790000
Epoch 191 训练集 Loss: 0.255955 训练集 准确率: 0.950000 验证集 Loss: 0.794035 验证集 准确率: 0.790000
Epoch 192 训练集 Loss: 0.292564 训练集 准确率: 0.921429 验证集 Loss: 0.792389 验证集 准确率: 0.790000
Epoch 193 训练集 Loss: 0.310908 训练集 准确率: 0.871429 验证集 Loss: 0.790617 验证集 准确率: 0.790000
Epoch 194 训练集 Loss: 0.221344 训练集 准确率: 0.950000 验证集 Loss: 0.789321 验证集 准确率: 0.796667
Epoch 195 训练集 Loss: 0.299323 训练集 准确率: 0.907143 验证集 Loss: 0.789059 验证集 准确率: 0.796667
Epoch 196 训练集 Loss: 0.246486 训练集 准确率: 0.935714 验证集 Loss: 0.790143 验证集 准确率: 0.796667
Epoch 197 训练集 Loss: 0.267889 训练集 准确率: 0.921429 验证集 Loss: 0.791030 验证集 准确率: 0.793333
Epoch 198 训练集 Loss: 0.191111 训练集 准确率: 0.971429 验证集 Loss: 0.790076 验证集 准确率: 0.793333
Epoch 199 训练集 Loss: 0.274076 训练集 准确率: 0.942857 验证集 Loss: 0.790784 验证集 准确率: 0.793333
Cora数据集 结果
最好验证集 第 172 Epoch 准确率 0.796667
对应测试集合 准确率: 0.766000
# (CPU版)可以自己调整超参数,比如学习率,epoch数,看看结果变化如何
!python check_on_cora.py  --epoch 200 --hidden_size 16 --learning_rate 0.01 --dropout 0.5

2. GAT模型

GAT模型进一步考虑了邻节点对当前节点的重要程度。建议:使用 GPU 来跑,速度比较快。

完成Single-Head GAT的消息传递机制

单头GAT的计算公式如下:

下面我们要做的,就是按照公式,一步步地实现我们的单头 GAT中的 send和recv 函数。

其中:

  • 在 send 函数中完成 LeakyReLU部分的计算;
  • 在 recv 函数中,对接受到的 logits 信息进行 softmax 操作,形成归一化的分数(公式当中的 alpha),再与结果进行加权求和。
%%writefile demo_gat.pyfrom pgl.utils import paddle_helper
import paddle.fluid as fluiddef single_head_gat(graph_wrapper, node_feature, hidden_size, name):# 实现单头GATdef send_func(src_feat, dst_feat, edge_feat):################################### 按照提示一步步理解代码吧,你只需要填###的地方# 1. 将源节点特征与目标节点特征concat 起来,对应公式当中的 concat 符号,可能用到的 API: fluid.layers.concatWh = fluid.layers.concat([src_feat["Wh"], dst_feat["Wh"]], axis=1)#### 2. 将上述 Wh 结果通过全连接层,也就对应公式中的a^Talpha = fluid.layers.fc(Wh, size=1, name=name + "_alpha", bias_attr=False)# 3. 将计算好的 alpha 利用 LeakyReLU 函数激活,可能用到的 API: fluid.layers.leaky_relualpha = fluid.layers.leaky_relu(alpha, 0.2)##################################return {"alpha": alpha, "Wh": src_feat["Wh"]}def recv_func(msg):################################### 按照提示一步步理解代码吧,你只需要填###的地方# 1. 对接收到的 logits 信息进行 softmax 操作,形成归一化分数,可能用到的 API: paddle_helper.sequence_softmaxalpha = msg["alpha"]norm_alpha = paddle_helper.sequence_softmax(alpha)#### 2. 对 msg["Wh"],也就是节点特征,用上述结果进行加权output = norm_alpha * msg["Wh"]# 3. 对加权后的结果进行相加的邻居聚合,可能用到的API: fluid.layers.sequence_pooloutput = fluid.layers.sequence_pool(output, pool_type="sum")##################################return output# 这一步,其实对应了求解公式当中的Whi, Whj,相当于对node feature加了一个全连接层Wh = fluid.layers.fc(node_feature, hidden_size, bias_attr=False, name=name + "_hidden")# 消息传递机制执行过程message = graph_wrapper.send(send_func, nfeat_list=[("Wh", Wh)])output = graph_wrapper.recv(message, recv_func)output = fluid.layers.elu(output)return outputdef gat(graph_wrapper, node_feature, hidden_size):# 完整多头GAT# 这里配置多个头,每个头的输出concat在一起,构成多头GATheads_output = []# 可以调整头数 (8 head x 8 hidden_size)的效果较好 n_heads = 8for head_no in range(n_heads):# 请完成单头的GAT的代码single_output = single_head_gat(graph_wrapper, node_feature, hidden_size, name="head_%s" % (head_no) )heads_output.append(single_output)output = fluid.layers.concat(heads_output, -1)return output
Overwriting demo_gat.py
# (GPU版) 可以自己调整超参数,比如学习率,epoch数,看看结果变化如何
!python check_on_cora.py --use_demo_gat --epoch 200 --hidden_size 8 --learning_rate 0.005 --dropout 0.6 --use_cuda
W1126 23:48:03.054235   429 device_context.cc:252] Please NOTE: device: 0, CUDA Capability: 70, Driver API Version: 10.1, Runtime API Version: 9.0
W1126 23:48:03.059626   429 device_context.cc:260] device: 0, cuDNN Version: 7.6.
开始训练 Cora数据集 200 Epoch
Epoch 0 训练集 Loss: 1.946858 训练集 准确率: 0.128571 验证集 Loss: 1.931387 验证集 准确率: 0.433333
Epoch 1 训练集 Loss: 1.926736 训练集 准确率: 0.485714 验证集 Loss: 1.917614 验证集 准确率: 0.460000
Epoch 2 训练集 Loss: 1.909122 训练集 准确率: 0.535714 验证集 Loss: 1.903771 验证集 准确率: 0.480000
Epoch 3 训练集 Loss: 1.887746 训练集 准确率: 0.564286 验证集 Loss: 1.889685 验证集 准确率: 0.503333
Epoch 4 训练集 Loss: 1.871657 训练集 准确率: 0.557143 验证集 Loss: 1.875336 验证集 准确率: 0.520000
Epoch 5 训练集 Loss: 1.851320 训练集 准确率: 0.550000 验证集 Loss: 1.860690 验证集 准确率: 0.520000
Epoch 6 训练集 Loss: 1.829249 训练集 准确率: 0.571429 验证集 Loss: 1.845778 验证集 准确率: 0.520000
Epoch 7 训练集 Loss: 1.807465 训练集 准确率: 0.571429 验证集 Loss: 1.830516 验证集 准确率: 0.520000
Epoch 8 训练集 Loss: 1.783947 训练集 准确率: 0.600000 验证集 Loss: 1.814923 验证集 准确率: 0.520000
Epoch 9 训练集 Loss: 1.770537 训练集 准确率: 0.607143 验证集 Loss: 1.799051 验证集 准确率: 0.516667
Epoch 10 训练集 Loss: 1.745371 训练集 准确率: 0.607143 验证集 Loss: 1.782927 验证集 准确率: 0.520000
Epoch 11 训练集 Loss: 1.717966 训练集 准确率: 0.585714 验证集 Loss: 1.766511 验证集 准确率: 0.520000
Epoch 12 训练集 Loss: 1.690578 训练集 准确率: 0.564286 验证集 Loss: 1.749752 验证集 准确率: 0.520000
Epoch 13 训练集 Loss: 1.668623 训练集 准确率: 0.600000 验证集 Loss: 1.732744 验证集 准确率: 0.520000
Epoch 14 训练集 Loss: 1.643237 训练集 准确率: 0.578571 验证集 Loss: 1.715502 验证集 准确率: 0.520000
Epoch 15 训练集 Loss: 1.636128 训练集 准确率: 0.600000 验证集 Loss: 1.698224 验证集 准确率: 0.520000
Epoch 16 训练集 Loss: 1.600566 训练集 准确率: 0.585714 验证集 Loss: 1.680868 验证集 准确率: 0.520000
Epoch 17 训练集 Loss: 1.572309 训练集 准确率: 0.607143 验证集 Loss: 1.663408 验证集 准确率: 0.520000
Epoch 18 训练集 Loss: 1.543488 训练集 准确率: 0.621429 验证集 Loss: 1.645828 验证集 准确率: 0.520000
Epoch 19 训练集 Loss: 1.533014 训练集 准确率: 0.621429 验证集 Loss: 1.628201 验证集 准确率: 0.520000
Epoch 20 训练集 Loss: 1.510984 训练集 准确率: 0.614286 验证集 Loss: 1.610584 验证集 准确率: 0.520000
Epoch 21 训练集 Loss: 1.479274 训练集 准确率: 0.614286 验证集 Loss: 1.592958 验证集 准确率: 0.520000
Epoch 22 训练集 Loss: 1.458967 训练集 准确率: 0.607143 验证集 Loss: 1.575312 验证集 准确率: 0.523333
Epoch 23 训练集 Loss: 1.432458 训练集 准确率: 0.621429 验证集 Loss: 1.557653 验证集 准确率: 0.523333
Epoch 24 训练集 Loss: 1.401357 训练集 准确率: 0.650000 验证集 Loss: 1.540025 验证集 准确率: 0.523333
Epoch 25 训练集 Loss: 1.370259 训练集 准确率: 0.664286 验证集 Loss: 1.522466 验证集 准确率: 0.530000
Epoch 26 训练集 Loss: 1.358681 训练集 准确率: 0.628571 验证集 Loss: 1.505017 验证集 准确率: 0.540000
Epoch 27 训练集 Loss: 1.325428 训练集 准确率: 0.671429 验证集 Loss: 1.487715 验证集 准确率: 0.540000
Epoch 28 训练集 Loss: 1.315164 训练集 准确率: 0.671429 验证集 Loss: 1.470492 验证集 准确率: 0.553333
Epoch 29 训练集 Loss: 1.272774 训练集 准确率: 0.692857 验证集 Loss: 1.453370 验证集 准确率: 0.563333
Epoch 30 训练集 Loss: 1.254717 训练集 准确率: 0.714286 验证集 Loss: 1.436359 验证集 准确率: 0.573333
Epoch 31 训练集 Loss: 1.233060 训练集 准确率: 0.707143 验证集 Loss: 1.419489 验证集 准确率: 0.596667
Epoch 32 训练集 Loss: 1.216978 训练集 准确率: 0.742857 验证集 Loss: 1.402774 验证集 准确率: 0.596667
Epoch 33 训练集 Loss: 1.170506 训练集 准确率: 0.764286 验证集 Loss: 1.386190 验证集 准确率: 0.613333
Epoch 34 训练集 Loss: 1.165050 训练集 准确率: 0.764286 验证集 Loss: 1.369809 验证集 准确率: 0.630000
Epoch 35 训练集 Loss: 1.134752 训练集 准确率: 0.792857 验证集 Loss: 1.353568 验证集 准确率: 0.636667
Epoch 36 训练集 Loss: 1.121874 训练集 准确率: 0.828571 验证集 Loss: 1.337545 验证集 准确率: 0.650000
Epoch 37 训练集 Loss: 1.077173 训练集 准确率: 0.771429 验证集 Loss: 1.321786 验证集 准确率: 0.660000
Epoch 38 训练集 Loss: 1.046189 训练集 准确率: 0.821429 验证集 Loss: 1.306199 验证集 准确率: 0.666667
Epoch 39 训练集 Loss: 1.052537 训练集 准确率: 0.821429 验证集 Loss: 1.290811 验证集 准确率: 0.676667
Epoch 40 训练集 Loss: 1.028368 训练集 准确率: 0.857143 验证集 Loss: 1.275631 验证集 准确率: 0.690000
Epoch 41 训练集 Loss: 0.995573 训练集 准确率: 0.857143 验证集 Loss: 1.260629 验证集 准确率: 0.706667
Epoch 42 训练集 Loss: 0.978808 训练集 准确率: 0.857143 验证集 Loss: 1.245879 验证集 准确率: 0.716667
Epoch 43 训练集 Loss: 0.947429 训练集 准确率: 0.864286 验证集 Loss: 1.231401 验证集 准确率: 0.736667
Epoch 44 训练集 Loss: 0.944428 训练集 准确率: 0.878571 验证集 Loss: 1.217172 验证集 准确率: 0.740000
Epoch 45 训练集 Loss: 0.916980 训练集 准确率: 0.892857 验证集 Loss: 1.203265 验证集 准确率: 0.743333
Epoch 46 训练集 Loss: 0.897888 训练集 准确率: 0.878571 验证集 Loss: 1.189554 验证集 准确率: 0.750000
Epoch 47 训练集 Loss: 0.862774 训练集 准确率: 0.878571 验证集 Loss: 1.176163 验证集 准确率: 0.756667
Epoch 48 训练集 Loss: 0.832342 训练集 准确率: 0.914286 验证集 Loss: 1.163042 验证集 准确率: 0.763333
Epoch 49 训练集 Loss: 0.874692 训练集 准确率: 0.892857 验证集 Loss: 1.150231 验证集 准确率: 0.766667
Epoch 50 训练集 Loss: 0.827544 训练集 准确率: 0.914286 验证集 Loss: 1.137786 验证集 准确率: 0.763333
Epoch 51 训练集 Loss: 0.826230 训练集 准确率: 0.900000 验证集 Loss: 1.125624 验证集 准确率: 0.776667
Epoch 52 训练集 Loss: 0.795293 训练集 准确率: 0.914286 验证集 Loss: 1.113705 验证集 准确率: 0.780000
Epoch 53 训练集 Loss: 0.756819 训练集 准确率: 0.921429 验证集 Loss: 1.102033 验证集 准确率: 0.783333
Epoch 54 训练集 Loss: 0.750537 训练集 准确率: 0.928571 验证集 Loss: 1.090545 验证集 准确率: 0.790000
Epoch 55 训练集 Loss: 0.737680 训练集 准确率: 0.928571 验证集 Loss: 1.079308 验证集 准确率: 0.790000
Epoch 56 训练集 Loss: 0.717256 训练集 准确率: 0.928571 验证集 Loss: 1.068377 验证集 准确率: 0.793333
Epoch 57 训练集 Loss: 0.704119 训练集 准确率: 0.928571 验证集 Loss: 1.057813 验证集 准确率: 0.800000
Epoch 58 训练集 Loss: 0.703677 训练集 准确率: 0.928571 验证集 Loss: 1.047406 验证集 准确率: 0.796667
Epoch 59 训练集 Loss: 0.678650 训练集 准确率: 0.942857 验证集 Loss: 1.037278 验证集 准确率: 0.796667
Epoch 60 训练集 Loss: 0.675640 训练集 准确率: 0.928571 验证集 Loss: 1.027539 验证集 准确率: 0.800000
Epoch 61 训练集 Loss: 0.652361 训练集 准确率: 0.928571 验证集 Loss: 1.017968 验证集 准确率: 0.803333
Epoch 62 训练集 Loss: 0.629363 训练集 准确率: 0.942857 验证集 Loss: 1.008687 验证集 准确率: 0.803333
Epoch 63 训练集 Loss: 0.624680 训练集 准确率: 0.942857 验证集 Loss: 0.999512 验证集 准确率: 0.803333
Epoch 64 训练集 Loss: 0.606972 训练集 准确率: 0.942857 验证集 Loss: 0.990634 验证集 准确率: 0.806667
Epoch 65 训练集 Loss: 0.580790 训练集 准确率: 0.942857 验证集 Loss: 0.981968 验证集 准确率: 0.806667
Epoch 66 训练集 Loss: 0.599603 训练集 准确率: 0.928571 验证集 Loss: 0.973527 验证集 准确率: 0.803333
Epoch 67 训练集 Loss: 0.583152 训练集 准确率: 0.942857 验证集 Loss: 0.965283 验证集 准确率: 0.803333
Epoch 68 训练集 Loss: 0.552264 训练集 准确率: 0.942857 验证集 Loss: 0.957312 验证集 准确率: 0.806667
Epoch 69 训练集 Loss: 0.542456 训练集 准确率: 0.957143 验证集 Loss: 0.949617 验证集 准确率: 0.806667
Epoch 70 训练集 Loss: 0.542032 训练集 准确率: 0.964286 验证集 Loss: 0.942037 验证集 准确率: 0.806667
Epoch 71 训练集 Loss: 0.537610 训练集 准确率: 0.950000 验证集 Loss: 0.934682 验证集 准确率: 0.810000
Epoch 72 训练集 Loss: 0.520964 训练集 准确率: 0.942857 验证集 Loss: 0.927634 验证集 准确率: 0.816667
Epoch 73 训练集 Loss: 0.507177 训练集 准确率: 0.950000 验证集 Loss: 0.920815 验证集 准确率: 0.820000
Epoch 74 训练集 Loss: 0.502212 训练集 准确率: 0.964286 验证集 Loss: 0.914174 验证集 准确率: 0.823333
Epoch 75 训练集 Loss: 0.497398 训练集 准确率: 0.964286 验证集 Loss: 0.907708 验证集 准确率: 0.826667
Epoch 76 训练集 Loss: 0.484569 训练集 准确率: 0.950000 验证集 Loss: 0.901606 验证集 准确率: 0.826667
Epoch 77 训练集 Loss: 0.476778 训练集 准确率: 0.950000 验证集 Loss: 0.895702 验证集 准确率: 0.826667
Epoch 78 训练集 Loss: 0.465717 训练集 准确率: 0.950000 验证集 Loss: 0.890078 验证集 准确率: 0.826667
Epoch 79 训练集 Loss: 0.472397 训练集 准确率: 0.957143 验证集 Loss: 0.884725 验证集 准确率: 0.826667
Epoch 80 训练集 Loss: 0.451518 训练集 准确率: 0.950000 验证集 Loss: 0.879597 验证集 准确率: 0.826667
Epoch 81 训练集 Loss: 0.457950 训练集 准确率: 0.964286 验证集 Loss: 0.874738 验证集 准确率: 0.830000
Epoch 82 训练集 Loss: 0.440765 训练集 准确率: 0.957143 验证集 Loss: 0.870164 验证集 准确率: 0.826667
Epoch 83 训练集 Loss: 0.441315 训练集 准确率: 0.964286 验证集 Loss: 0.865712 验证集 准确率: 0.826667
Epoch 84 训练集 Loss: 0.409847 训练集 准确率: 0.964286 验证集 Loss: 0.861493 验证集 准确率: 0.823333
Epoch 85 训练集 Loss: 0.408059 训练集 准确率: 0.957143 验证集 Loss: 0.857509 验证集 准确率: 0.820000
Epoch 86 训练集 Loss: 0.438479 训练集 准确率: 0.971429 验证集 Loss: 0.853643 验证集 准确率: 0.823333
Epoch 87 训练集 Loss: 0.409497 训练集 准确率: 0.971429 验证集 Loss: 0.849959 验证集 准确率: 0.823333
Epoch 88 训练集 Loss: 0.396206 训练集 准确率: 0.964286 验证集 Loss: 0.846440 验证集 准确率: 0.823333
Epoch 89 训练集 Loss: 0.395820 训练集 准确率: 0.971429 验证集 Loss: 0.843050 验证集 准确率: 0.823333
Epoch 90 训练集 Loss: 0.379405 训练集 准确率: 0.957143 验证集 Loss: 0.839756 验证集 准确率: 0.823333
Epoch 91 训练集 Loss: 0.400125 训练集 准确率: 0.964286 验证集 Loss: 0.836566 验证集 准确率: 0.823333
Epoch 92 训练集 Loss: 0.384490 训练集 准确率: 0.964286 验证集 Loss: 0.833639 验证集 准确率: 0.823333
Epoch 93 训练集 Loss: 0.385009 训练集 准确率: 0.978571 验证集 Loss: 0.830812 验证集 准确率: 0.823333
Epoch 94 训练集 Loss: 0.359145 训练集 准确率: 0.978571 验证集 Loss: 0.828104 验证集 准确率: 0.816667
Epoch 95 训练集 Loss: 0.371252 训练集 准确率: 0.964286 验证集 Loss: 0.825465 验证集 准确率: 0.816667
Epoch 96 训练集 Loss: 0.379745 训练集 准确率: 0.978571 验证集 Loss: 0.822860 验证集 准确率: 0.816667
Epoch 97 训练集 Loss: 0.344091 训练集 准确率: 0.964286 验证集 Loss: 0.820361 验证集 准确率: 0.810000
Epoch 98 训练集 Loss: 0.360476 训练集 准确率: 0.985714 验证集 Loss: 0.818027 验证集 准确率: 0.810000
Epoch 99 训练集 Loss: 0.374823 训练集 准确率: 0.978571 验证集 Loss: 0.815854 验证集 准确率: 0.810000
Epoch 100 训练集 Loss: 0.356869 训练集 准确率: 0.964286 验证集 Loss: 0.813765 验证集 准确率: 0.810000
Epoch 101 训练集 Loss: 0.341185 训练集 准确率: 0.978571 验证集 Loss: 0.811740 验证集 准确率: 0.810000
Epoch 102 训练集 Loss: 0.360859 训练集 准确率: 0.978571 验证集 Loss: 0.809778 验证集 准确率: 0.810000
Epoch 103 训练集 Loss: 0.339235 训练集 准确率: 0.964286 验证集 Loss: 0.807795 验证集 准确率: 0.813333
Epoch 104 训练集 Loss: 0.312694 训练集 准确率: 0.978571 验证集 Loss: 0.805945 验证集 准确率: 0.813333
Epoch 105 训练集 Loss: 0.351931 训练集 准确率: 0.971429 验证集 Loss: 0.804096 验证集 准确率: 0.813333
Epoch 106 训练集 Loss: 0.352021 训练集 准确率: 0.978571 验证集 Loss: 0.802284 验证集 准确率: 0.813333
Epoch 107 训练集 Loss: 0.326741 训练集 准确率: 0.978571 验证集 Loss: 0.800434 验证集 准确率: 0.810000
Epoch 108 训练集 Loss: 0.297874 训练集 准确率: 0.985714 验证集 Loss: 0.798599 验证集 准确率: 0.810000
Epoch 109 训练集 Loss: 0.312200 训练集 准确率: 0.985714 验证集 Loss: 0.796897 验证集 准确率: 0.810000
Epoch 110 训练集 Loss: 0.332436 训练集 准确率: 0.971429 验证集 Loss: 0.795241 验证集 准确率: 0.810000
Epoch 111 训练集 Loss: 0.288238 训练集 准确率: 0.978571 验证集 Loss: 0.793714 验证集 准确率: 0.810000
Epoch 112 训练集 Loss: 0.300857 训练集 准确率: 0.992857 验证集 Loss: 0.792298 验证集 准确率: 0.810000
Epoch 113 训练集 Loss: 0.296207 训练集 准确率: 0.985714 验证集 Loss: 0.791022 验证集 准确率: 0.810000
Epoch 114 训练集 Loss: 0.290377 训练集 准确率: 0.985714 验证集 Loss: 0.789897 验证集 准确率: 0.810000
Epoch 115 训练集 Loss: 0.299762 训练集 准确率: 0.992857 验证集 Loss: 0.788850 验证集 准确率: 0.810000
Epoch 116 训练集 Loss: 0.301660 训练集 准确率: 1.000000 验证集 Loss: 0.787853 验证集 准确率: 0.813333
Epoch 117 训练集 Loss: 0.290795 训练集 准确率: 0.985714 验证集 Loss: 0.786947 验证集 准确率: 0.813333
Epoch 118 训练集 Loss: 0.285995 训练集 准确率: 0.992857 验证集 Loss: 0.786136 验证集 准确率: 0.810000
Epoch 119 训练集 Loss: 0.296069 训练集 准确率: 0.985714 验证集 Loss: 0.785352 验证集 准确率: 0.810000
Epoch 120 训练集 Loss: 0.291523 训练集 准确率: 0.978571 验证集 Loss: 0.784656 验证集 准确率: 0.810000
Epoch 121 训练集 Loss: 0.290747 训练集 准确率: 0.978571 验证集 Loss: 0.783907 验证集 准确率: 0.810000
Epoch 122 训练集 Loss: 0.286036 训练集 准确率: 0.992857 验证集 Loss: 0.783219 验证集 准确率: 0.810000
Epoch 123 训练集 Loss: 0.257381 训练集 准确率: 0.992857 验证集 Loss: 0.782525 验证集 准确率: 0.810000
Epoch 124 训练集 Loss: 0.278715 训练集 准确率: 0.992857 验证集 Loss: 0.781792 验证集 准确率: 0.806667
Epoch 125 训练集 Loss: 0.279739 训练集 准确率: 0.992857 验证集 Loss: 0.781084 验证集 准确率: 0.806667
Epoch 126 训练集 Loss: 0.273854 训练集 准确率: 1.000000 验证集 Loss: 0.780227 验证集 准确率: 0.806667
Epoch 127 训练集 Loss: 0.275228 训练集 准确率: 1.000000 验证集 Loss: 0.779403 验证集 准确率: 0.806667
Epoch 128 训练集 Loss: 0.278671 训练集 准确率: 0.978571 验证集 Loss: 0.778697 验证集 准确率: 0.806667
Epoch 129 训练集 Loss: 0.277377 训练集 准确率: 0.992857 验证集 Loss: 0.778084 验证集 准确率: 0.806667
Epoch 130 训练集 Loss: 0.260415 训练集 准确率: 1.000000 验证集 Loss: 0.777345 验证集 准确率: 0.806667
Epoch 131 训练集 Loss: 0.256237 训练集 准确率: 1.000000 验证集 Loss: 0.776487 验证集 准确率: 0.806667
Epoch 132 训练集 Loss: 0.266358 训练集 准确率: 0.978571 验证集 Loss: 0.775766 验证集 准确率: 0.810000
Epoch 133 训练集 Loss: 0.270487 训练集 准确率: 1.000000 验证集 Loss: 0.775219 验证集 准确率: 0.810000
Epoch 134 训练集 Loss: 0.261749 训练集 准确率: 0.985714 验证集 Loss: 0.774663 验证集 准确率: 0.810000
Epoch 135 训练集 Loss: 0.255678 训练集 准确率: 0.992857 验证集 Loss: 0.774013 验证集 准确率: 0.810000
Epoch 136 训练集 Loss: 0.247293 训练集 准确率: 1.000000 验证集 Loss: 0.773425 验证集 准确率: 0.810000
Epoch 137 训练集 Loss: 0.257170 训练集 准确率: 1.000000 验证集 Loss: 0.772847 验证集 准确率: 0.810000
Epoch 138 训练集 Loss: 0.254385 训练集 准确率: 0.992857 验证集 Loss: 0.772269 验证集 准确率: 0.810000
Epoch 139 训练集 Loss: 0.246898 训练集 准确率: 1.000000 验证集 Loss: 0.771732 验证集 准确率: 0.810000
Epoch 140 训练集 Loss: 0.248489 训练集 准确率: 0.992857 验证集 Loss: 0.771266 验证集 准确率: 0.810000
Epoch 141 训练集 Loss: 0.249611 训练集 准确率: 1.000000 验证集 Loss: 0.770831 验证集 准确率: 0.810000
Epoch 142 训练集 Loss: 0.249645 训练集 准确率: 1.000000 验证集 Loss: 0.770434 验证集 准确率: 0.810000
Epoch 143 训练集 Loss: 0.244059 训练集 准确率: 1.000000 验证集 Loss: 0.770105 验证集 准确率: 0.810000
Epoch 144 训练集 Loss: 0.245018 训练集 准确率: 0.985714 验证集 Loss: 0.769920 验证集 准确率: 0.810000
Epoch 145 训练集 Loss: 0.235948 训练集 准确率: 0.992857 验证集 Loss: 0.769658 验证集 准确率: 0.810000
Epoch 146 训练集 Loss: 0.234663 训练集 准确率: 1.000000 验证集 Loss: 0.769528 验证集 准确率: 0.810000
Epoch 147 训练集 Loss: 0.235060 训练集 准确率: 1.000000 验证集 Loss: 0.769537 验证集 准确率: 0.810000
Epoch 148 训练集 Loss: 0.223382 训练集 准确率: 1.000000 验证集 Loss: 0.769546 验证集 准确率: 0.810000
Epoch 149 训练集 Loss: 0.225519 训练集 准确率: 1.000000 验证集 Loss: 0.769521 验证集 准确率: 0.810000
Epoch 150 训练集 Loss: 0.246103 训练集 准确率: 1.000000 验证集 Loss: 0.769591 验证集 准确率: 0.810000
Epoch 151 训练集 Loss: 0.227994 训练集 准确率: 0.992857 验证集 Loss: 0.769592 验证集 准确率: 0.810000
Epoch 152 训练集 Loss: 0.239333 训练集 准确率: 1.000000 验证集 Loss: 0.769686 验证集 准确率: 0.810000
Epoch 153 训练集 Loss: 0.244201 训练集 准确率: 0.992857 验证集 Loss: 0.769571 验证集 准确率: 0.810000
Epoch 154 训练集 Loss: 0.221942 训练集 准确率: 1.000000 验证集 Loss: 0.769469 验证集 准确率: 0.806667
Epoch 155 训练集 Loss: 0.222201 训练集 准确率: 0.992857 验证集 Loss: 0.769397 验证集 准确率: 0.806667
Epoch 156 训练集 Loss: 0.221125 训练集 准确率: 0.992857 验证集 Loss: 0.769299 验证集 准确率: 0.806667
Epoch 157 训练集 Loss: 0.236624 训练集 准确率: 0.992857 验证集 Loss: 0.769315 验证集 准确率: 0.803333
Epoch 158 训练集 Loss: 0.226982 训练集 准确率: 0.985714 验证集 Loss: 0.769400 验证集 准确率: 0.803333
Epoch 159 训练集 Loss: 0.227633 训练集 准确率: 0.992857 验证集 Loss: 0.769507 验证集 准确率: 0.803333
Epoch 160 训练集 Loss: 0.229798 训练集 准确率: 1.000000 验证集 Loss: 0.769664 验证集 准确率: 0.803333
Epoch 161 训练集 Loss: 0.221963 训练集 准确率: 0.992857 验证集 Loss: 0.769794 验证集 准确率: 0.803333
Epoch 162 训练集 Loss: 0.218154 训练集 准确率: 1.000000 验证集 Loss: 0.769773 验证集 准确率: 0.803333
Epoch 163 训练集 Loss: 0.215083 训练集 准确率: 1.000000 验证集 Loss: 0.769754 验证集 准确率: 0.803333
Epoch 164 训练集 Loss: 0.213217 训练集 准确率: 1.000000 验证集 Loss: 0.769753 验证集 准确率: 0.803333
Epoch 165 训练集 Loss: 0.207440 训练集 准确率: 1.000000 验证集 Loss: 0.769636 验证集 准确率: 0.803333
Epoch 166 训练集 Loss: 0.230956 训练集 准确率: 1.000000 验证集 Loss: 0.769624 验证集 准确率: 0.803333
Epoch 167 训练集 Loss: 0.212387 训练集 准确率: 1.000000 验证集 Loss: 0.769710 验证集 准确率: 0.806667
Epoch 168 训练集 Loss: 0.200826 训练集 准确率: 1.000000 验证集 Loss: 0.769588 验证集 准确率: 0.806667
Epoch 169 训练集 Loss: 0.222742 训练集 准确率: 1.000000 验证集 Loss: 0.769624 验证集 准确率: 0.806667
Epoch 170 训练集 Loss: 0.213535 训练集 准确率: 1.000000 验证集 Loss: 0.769653 验证集 准确率: 0.806667
Epoch 171 训练集 Loss: 0.206734 训练集 准确率: 1.000000 验证集 Loss: 0.769693 验证集 准确率: 0.806667
Epoch 172 训练集 Loss: 0.215233 训练集 准确率: 1.000000 验证集 Loss: 0.769593 验证集 准确率: 0.806667
Epoch 173 训练集 Loss: 0.199568 训练集 准确率: 1.000000 验证集 Loss: 0.769396 验证集 准确率: 0.806667
Epoch 174 训练集 Loss: 0.214857 训练集 准确率: 1.000000 验证集 Loss: 0.769286 验证集 准确率: 0.806667
Epoch 175 训练集 Loss: 0.210566 训练集 准确率: 1.000000 验证集 Loss: 0.769345 验证集 准确率: 0.806667
Epoch 176 训练集 Loss: 0.198527 训练集 准确率: 0.992857 验证集 Loss: 0.769376 验证集 准确率: 0.803333
Epoch 177 训练集 Loss: 0.210332 训练集 准确率: 0.992857 验证集 Loss: 0.769552 验证集 准确率: 0.803333
Epoch 178 训练集 Loss: 0.213301 训练集 准确率: 1.000000 验证集 Loss: 0.769752 验证集 准确率: 0.803333
Epoch 179 训练集 Loss: 0.209192 训练集 准确率: 1.000000 验证集 Loss: 0.770091 验证集 准确率: 0.803333
Epoch 180 训练集 Loss: 0.202968 训练集 准确率: 1.000000 验证集 Loss: 0.770367 验证集 准确率: 0.803333
Epoch 181 训练集 Loss: 0.200637 训练集 准确率: 1.000000 验证集 Loss: 0.770545 验证集 准确率: 0.803333
Epoch 182 训练集 Loss: 0.210745 训练集 准确率: 0.992857 验证集 Loss: 0.770665 验证集 准确率: 0.806667
Epoch 183 训练集 Loss: 0.208073 训练集 准确率: 1.000000 验证集 Loss: 0.770791 验证集 准确率: 0.806667
Epoch 184 训练集 Loss: 0.185691 训练集 准确率: 1.000000 验证集 Loss: 0.770773 验证集 准确率: 0.806667
Epoch 185 训练集 Loss: 0.194379 训练集 准确率: 1.000000 验证集 Loss: 0.770683 验证集 准确率: 0.806667
Epoch 186 训练集 Loss: 0.184703 训练集 准确率: 1.000000 验证集 Loss: 0.770686 验证集 准确率: 0.806667
Epoch 187 训练集 Loss: 0.221291 训练集 准确率: 0.992857 验证集 Loss: 0.770585 验证集 准确率: 0.806667
Epoch 188 训练集 Loss: 0.187721 训练集 准确率: 0.992857 验证集 Loss: 0.770368 验证集 准确率: 0.803333
Epoch 189 训练集 Loss: 0.188805 训练集 准确率: 1.000000 验证集 Loss: 0.770068 验证集 准确率: 0.803333
Epoch 190 训练集 Loss: 0.198169 训练集 准确率: 0.992857 验证集 Loss: 0.769854 验证集 准确率: 0.806667
Epoch 191 训练集 Loss: 0.184280 训练集 准确率: 1.000000 验证集 Loss: 0.769681 验证集 准确率: 0.803333
Epoch 192 训练集 Loss: 0.177709 训练集 准确率: 1.000000 验证集 Loss: 0.769385 验证集 准确率: 0.803333
Epoch 193 训练集 Loss: 0.194915 训练集 准确率: 1.000000 验证集 Loss: 0.769259 验证集 准确率: 0.803333
Epoch 194 训练集 Loss: 0.194127 训练集 准确率: 0.992857 验证集 Loss: 0.769292 验证集 准确率: 0.803333
Epoch 195 训练集 Loss: 0.189487 训练集 准确率: 1.000000 验证集 Loss: 0.769307 验证集 准确率: 0.803333
Epoch 196 训练集 Loss: 0.184339 训练集 准确率: 1.000000 验证集 Loss: 0.769406 验证集 准确率: 0.803333
Epoch 197 训练集 Loss: 0.190863 训练集 准确率: 1.000000 验证集 Loss: 0.769482 验证集 准确率: 0.803333
Epoch 198 训练集 Loss: 0.195655 训练集 准确率: 1.000000 验证集 Loss: 0.769604 验证集 准确率: 0.803333
Epoch 199 训练集 Loss: 0.197494 训练集 准确率: 1.000000 验证集 Loss: 0.769775 验证集 准确率: 0.803333
Cora数据集 结果
最好验证集 第 81 Epoch 准确率 0.830000
对应测试集合 准确率: 0.795000
# 可以自己调整超参数,比如学习率,epoch数,看看结果变化如何
!python check_on_cora.py --use_demo_gat --epoch 200 --hidden_size 8 --learning_rate 0.01 --dropout 0.5

课程链接:图神经网络7日打卡营

【飞桨】图神经网络7日打卡营 学习笔记相关推荐

  1. 百度图神经网络7日打卡营--DAY01前半部分 总结

    首先很感谢百度AI团队这个平台,给大家请来世界级冠军来给大家做这一次的7日打卡营活动, 还提供免费的GPU算力平台,以及成熟可用的 包含刷新目前 最权威的 图神经ORB榜单的SOTA模型的 PGL 图 ...

  2. ERNIE加持,飞桨图神经网络PGL全新升级

    在2019年深度学习开发者秋季峰会上,百度对外发布飞桨图学习框架PGL v1.0正式版,历经5个月的版本迭代,PGL再度升级,发布v1.1版本,带来了最新的算法突破.全面的工业级图学习框架能力以及工业 ...

  3. Python小白逆袭大神七日打卡营飞桨paddlepaddle

    这里写自定义目录标题 Python小白逆袭大神七日打卡营全纪录 day1-Python基础 day2-<青春有你2>选手信息爬取 day3-<青春有你2>选手数据分析 day4 ...

  4. 飞桨首款韩女团小卡扭蛋机

    前言 其实一直想做一个韩国女团的安利(推荐)项目,奈何自己太菜了,一直没搞.一眨眼就到2021年年底了,也就想着结合自己的长处写一个充满韩范项目吧,恰巧遇到飞桨黑客松 48H Coding Party ...

  5. Paddle-NEAT——飞桨进化神经网络组件

    Paddle-NEAT--飞桨进化神经网络组件 目录 Paddle-NEAT--飞桨进化神经网络组件 写在前面: NEAT 简介 基因组的表示 基因组的变异 节点变异 连接变异 基因组的交叉 最后稍微 ...

  6. 生成对抗网络7日打卡营来了!GAN就对了!

    点击左上方蓝字关注我们 CV算法岗日渐内卷的今日,GAN( Generative Adversarial Networks,生成对抗网络)又一次引起了我们的注意.诚然,GAN在动作迁移.图像超分等方面 ...

  7. 【飞桨/百度领航团/零基础Python】学习心得

    [飞桨/百度领航团/零基础Python]学习心得 课程链接:https://aistudio.baidu.com/aistudio/course/introduce/7073 初识python Pyt ...

  8. 百度飞桨2021李宏毅机器学习特训营学习笔记之回归及作业PM2.5预测

    百度飞桨2021李宏毅机器学习特训营学习笔记之回归及作业PM2.5预测 前言 回归 什么是回归(Regression)? 怎么做回归? 线性回归(Linear Regression) 训练集与验证集 ...

  9. 基于神经网络的机器阅读理解综述学习笔记

    基于神经网络的机器阅读理解综述学习笔记 一.机器阅读理解的任务定义 1.问题描述 机器阅读理解任务可以形式化成一个有监督的学习问题:给出三元组形式的训练数据(C,Q,A),其中,C 表示段落,Q 表示 ...

最新文章

  1. python ipython spyder
  2. Python标准异常总结
  3. TensorFlow 教程 --教程--2.8循环神经网络
  4. 盒子模型(悬挂式布局)
  5. 在微软 Team 中查看 GIF 文件就能触发账户劫持漏洞?
  6. 【数据结构笔记04】线性结构:线性表及其实现
  7. Java中的管程Monitor
  8. 快速入门分布式消息队列之 RabbitMQ(2)
  9. python会计实证研究_适合会计、金融实证研究的统计软件、编程语言搭配
  10. 【LwM2M】LwM2M相关的开源项目
  11. 城市大数据及开放数据索引
  12. Mac配置maven环境变量
  13. 论文中的三线表及表格规范
  14. RuntimeError: Error compiling objects for extension 和nvcc fatal : Unsupported gpu architecture ‘c
  15. 20155313 杨瀚 《网络对抗技术》实验二 后门原理与实践
  16. mysql查询1970年以后出生的人_1970年属狗女一生命运,70年属狗人一生灾难有哪些...
  17. Linux虚拟网络基础 — Bridge
  18. 开课吧java广告,开课吧Java面试题:虚引用与软引用和弱引用的区别
  19. 整合SpringBoot + MybatisPlus 搭建JAVA多模块项目基本骨架
  20. (转载)一次Linux系统被攻击的分析过程

热门文章

  1. 国内电子数据取证鉴定标准最新合集(2020版)
  2. LEADTOOLS V22.0 Patch
  3. .net CallbackOnCollectedDelegate 垃圾回收问题。 (Handle::Invoke”类型的已垃圾回收委托进行了回调。)
  4. 为什么函数f(x)=x²不是满射
  5. 四十三、文件传输协议FTP、电子邮件、万维网
  6. c语言上机考题库,C语言上机考题库.doc
  7. java mysql 时间查询_MYSQL实现查询某个时间段内每一天的数据
  8. 基于Vue+SpringBoot智慧校园疫情防控系统(PC端、手机端)--附源码
  9. 程序猿生存指南-61 离巢之鸟
  10. Django通过celery 异步发送邮件 : django开发之天天生鲜项目知识总结【5】