GNN学习笔记(一):环境配置与PyG中图与图数据集的表示和使用

一、引言

PyTorch Geometric,简称Pyg。Pyg库包含易用的小批量加载器(mini-batch loader)、多GPU支持、大量常见基准数据集和有用的变换,适用于任意图像、三维网格(3D mesh)和点云。基于PyTorch构建,用于处理不规则结构化输入数据(如图、点云、流形)。除了一般的图形数据结构和处理方法外,它还包含从关系学习到3D数据处理等领域中最新发布的多种方法。通过利用稀疏 GPU 加速、提供专用的 CUDA 内核以及为不同大小的输入样本引入高效的小批量处理,PyTorch Geometric 实现了很高的数据吞吐量。

二、环境的配置

嘚嘚嘚,唠叨小主策马扬鞭,即将为你讲解的就是今天的任务——在苹果电脑macOS的系统下安装pytorch。安装步骤如下:

1.安装包管理工具anaconda或pip,任选其一就可以。

2.安装pytorch。如果使用anaconda进行安装,则安装命令为:

conda install pytorch torchvision-c pytorch -y

问题一:我选择使用anaconda进行安装,所以在终端输入:

conda install pytorch torchvision -c pytorch -y

终端显示:command not found: conda,解决办法是:没找到解决办法!!!找了很久,试了很多,没用!!why??基于此,我决定删了,重新下载重新安装,安装成功后,在终端输入:

conda --version

 终端输出conda的版本:

这意味着conda可以用了!!接着在终端输入以下代码:

conda install pytorch torchvision -c pytorch -y

成功安装!接着在终端输入代码验证是否安装成功:

python -c "import torch; print(torch.__version__)"

安装成功!! 

3.安装相对应的cudatoolkit

问题二:问题又出现了!“macOS Catalina(10.15.1)无法安装使用CUDA了”!!!what?!

解决办法:此路不通,换条路就好了,所以唠叨小主,掉头前往阿里云天池DSW,附上链接https://blog.csdn.net/update7/article/details/107734564

4.安装正确版本的PyG

因为唠叨小主的电脑是macOS系统,所以直接安装cpu版本,如下:

pip install torch-scatter -f https://pytorch-geometric.com/whl/torch-1.8.0+cpu.html
pip install torch-sparse -f https://pytorch-geometric.com/whl/torch-1.8.0+cpu.html
pip install torch-cluster -f https://pytorch-geometric.com/whl/torch-1.8.0+cpu.html
pip install torch-spline-conv -f hhttps://pytorch-geometric.com/whl/torch-1.8.0+cpu.html
pip install torch-geometric

安装成功!!

三、学习笔记

简单的图论知识,可自行学习,此部分比较简单,唠叨小主就不为你介绍啦,网上资料众多。

四、作业及答案

请通过继承Data类实现一个类,专门用于表示“机构-作者-论文”的网络。该网络包含“机构“、”作者“和”论文”三类节点,以及“作者-机构“和“作者-论文“两类边。对要实现的类的要求:

  1. 用不同的属性存储不同节点的属性;
  2. 用不同的属性存储不同的边(边没有属性);
  3. 逐一实现获取不同节点数量的方法。
import networkx as nx
from torch_geometric.data import Data


G = nx.Graph()
# 添加节点
G.add_node(1,a='organization') 
G.add_node(2,a='author') 
G.add_node(3,a='thesis') 
# # 添加连线
#G.add_edges_from([('author','thesis'),('author','organization')])
G.add_edge(1, 2)
G.add_edge(2, 3)
# 图的节点结构

# from Graph import Graph
# from Node import Node
# from Edge import Edge


class relation(Data):

    def __init__(self, organization,author,thesis):
        #继承父类的构造方法
        Data.__init__()
        #然后定义类本身的属性
        #用不同的属性存储不同节点的属性
        self.node1 = organization
        self.node2 = author
        self.node3 = thesis
        #用不同的属性存储不同的边
        self.edge1_index = edge1_index #边1 索引
        self.edge1_attr = edge1_attr #边1 属性
        self.edge2_index = edge2_index #边2 索引
        self.edge2_attr = edge2_attr #边2 属性
        self.y=y
    def Node():
        self.value = value      # 节点值
        self.come = 0           # 节点入度
        self.out = 0            # 节点出度
        self.nexts = []         # 节点的邻居节点
        self.edges = []         # 在节点为from的情况下,边的集合
    def Edge():
        self.weight = weight        # 边的权重
        self.fro = fro              # 边的from节点
        self.to = to                # 边的to节点 

#逐一实现获取不同节点数量的方法
print('degree of node 1: ', G.degree(1))
print('degree of node 2: ', G.degree(2))
print('degree of node 3: ', G.degree(3))

此为唠叨小主的学习笔记,若有不足之处,望各位大侠不吝赐教,小生定当不胜感激。

参考网址:

https://www.cnblogs.com/yingqml/p/7776975.html

https://zhuanlan.zhihu.com/p/61717000

https://www.mobibrw.com/2019/21721

https://blog.csdn.net/qq_28168421/article/details/88609365

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值