2023年CS22Wassignment中的所有colab答案以及注释已经上传到github:https://github.com/yuyu990116/CS224W-assignment
CS224W课程地址:http://web.stanford.edu/class/cs224w/
异构图通过专门合并不同的节点和边类型来扩展我们之前看到的传统同质图。这些额外的信息使我们能够扩展我们以前使用过的图神经网络模型。也就是说,我们可以应用异构消息传递,其中不同的消息类型现在存在于不同的节点、边缘类型关系之间。 首先,我们将学习如何将NetworkX图转换为DeepSNAP表示。此外,我们将更深入地探讨 DeepSNAP 如何将异构图存储和表示为 PyTorch 张量。 然后,我们将使用 PyTorch Geonetric 和 DeepSNAP on 节点属性预测任务构建我们自己的异构图神经网络模型。为了评估这些模型,我们将在异构 ACM 数据集上使用我们的模型。
在NetworkX中,spring_layout函数是一种用于计算节点在图中的位置的布局算法。它基于力导向图的原理,其中节点之间的相互作用力模拟了弹簧系统的行为。该算法会根据节点之间的连接关系和一些随机性,自动确定节点在平面上的位置。
具体来说,spring_layout函数使用Fruchterman-Reingold算法来计算节点的布局。该算法通过模拟节点之间的斥力和连接边的引力,并在迭代过程中不断调整节点的位置,以达到节点均衡和边长度最小化的目标。
在这行代码中,pos是一个字典,其中键是图中的节点,值是节点的二维坐标。通过调用spring_layout函数并将图G作为参数传递,可以计算出节点的布局,并将结果保存在pos字典中。
你可以使用pos字典来可视化图的节点布局,例如使用matplotlib库绘制节点的散点图或线条连接。
nx.draw(G, pos=pos, cmap=plt.get_cmap(‘coolwarm’), node_color=node_color)