一、引言
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
类实现一个类,专门用于表示“机构-作者-论文”的网络。该网络包含“机构“、”作者“和”论文”三类节点,以及“作者-机构“和“作者-论文“两类边。对要实现的类的要求:
- 用不同的属性存储不同节点的属性;
- 用不同的属性存储不同的边(边没有属性);
- 逐一实现获取不同节点数量的方法。
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