图神经网络学习task1(图论与程序中图的操作)

一、 本阶段学习任务时间:3天
二、 本阶段学习内容:图论与程序中图的操作

  1. 我们将首先学习简单图论知识、了解常规的图预测任务;
  2. 然后学习基于PyG包的图数据的表示与使用;
    三、学习总结
    本阶段主要内容是需要熟悉图神经网络的基础知识,这些知识基本上在大学计算机专业课程离散数学中有过接触,本人前期也学习过一些图的基本知识,因此这部分内容相对容易。
  3. 主要图的基础知识包括:图的定义、邻接矩阵、节点的度、邻接节点、路径、连通分量、子图、最短路径、拉普拉斯矩阵
  4. 图的种类:
    同质图:只有一种类型的节点和一种类型的边的图
    异质图:存在多种类型的节点和多种类型的边的图。
    二部图:节点分为两类,只有不同类的节点之间存在边。
  5. 图结构数据上的机器学习 :节点预测、边预测、图的预测、节点聚类。。。。。。
    不熟悉的可以参照网站:
    https://github.com/datawhalechina/team-learning-nlp/blob/master/GNN/Markdown%E7%89%88%E6%9C%AC/2-%E7%AE%80%E5%8D%95%E5%9B%BE%E8%AE%BA.md
  6. 系统配置的安装
    这是本次学习任务的重点,环境配置成功与否和下一步学习是否能够顺利进行息息相关。
    本人电脑GPU配置成功完成,参照的教程如下网站:
    https://aistudio.baidu.com/aistudio/projectdetail/696822
    配置成功后,命令行下输入:
    nvidia-smi
    在这里插入图片描述
    根据电脑GPU的配置,在anaconda环境中创建虚拟环境,然后
    conda install pytorch torchvision torchaudio cudatoolkit=10.2 -c pytorch命令按照pytorch。
    然后安装PyG
    pip install torch-scatter -f https://pytorch-geometric.com/whl/torch-1.8.0+cu101.html
    pip install torch-sparse -f https://pytorch-geometric.com/whl/torch-1.8.0+cu101.html
    pip install torch-cluster -f https://pytorch-geometric.com/whl/torch-1.8.0+cu101.html
    pip install torch-spline-conv -f https://pytorch-geometric.com/whl/torch-1.8.0+cu101.html
    pip install torch-geometric
    至此为止,系统配置完成。ok!
  7. Data类和Dataset类的学习。
    主要学习内容参见网站:
    https://github.com/datawhalechina/team-learning-nlp/blob/master/GNN/Markdown%E7%89%88%E6%9C%AC/3-%E7%8E%AF%E5%A2%83%E9%85%8D%E7%BD%AE%E4%B8%8EPyG%E5%BA%93.md
    6.作业
    请通过继承Data类实现一个类,专门用于表示“机构-作者-论文”的网络。该网络包含“机构“、”作者“和”论文”三类节点,以及“作者-机构“和“作者-论文“两类边。对要实现的类的要求:1)用不同的属性存储不同节点的属性;2)用不同的属性存储不同的边(边没有属性);3)逐一实现获取不同节点数量的方法。
    实现方法:通过继承torch_geometric.data的Data类实现,定义自身的属性和方法。
    from torch_geometric.data import Data
    class Mydata(Data):
    def init(self,organization, author, paper, ao_edge_index, ao_edge_attr, ap_edge_index, ap_edge_attr,y, **kwargs):
    super().init(**kwargs)
    self.organization=organization
    self.author=author
    self.paper=paper
    self.ao_edge_index=ao_edge_index
    self.ap_edge_index=ap_edge_index
    self.y=y
    @property
    def num_organization_nodes(self):
    return self.organization.shape[0]

版权声明:本文为shiwy原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。