首页 > 其他分享 >PyTorch Geometric Temporal 介绍 —— 数据结构和RGCN的概念

PyTorch Geometric Temporal 介绍 —— 数据结构和RGCN的概念

时间:2022-11-28 01:22:22浏览次数:68  
标签:index Graph Temporal Geometric PyTorch RGCN 节点

Introduction

PyTorch Geometric Temporal is a temporal graph neural network extension library for PyTorch Geometric.

PyTorch Geometric Temporal 是基于PyTorch Geometric的对时间序列图数据的扩展。

Data Structures: PyTorch Geometric Temporal Signal

定义:在PyTorch Geometric Temporal中,边、边特征、节点被归为图结构Graph,节点特征被归为信号Single,对于特定时间切片或特定时间点的时间序列图数据被称为快照Snapshot。

PyTorch Geometric Temporal定义了数个Temporal Signal Iterators用于时间序列图数据的迭代。

Temporal Signal Iterators数据迭代器的参数是由描述图的各个对象(edge_index,node_feature,...)的列表组成,列表的索引对应各时间节点。

按照图结构的时间序列中的变换部分不同,图结构包括但不限于为以下几种:

  • Static Graph with Temporal Signal
    静态的边和边特征,静态的节点,动态的节点特征
  • Dynamic Graph with Temporal Signal
    动态的边和边特征,动态的节点和节点特征
  • Dynamic Graph with Static Signal
    动态的边和边特征,动态的节点,静态的节点特征

理论上来说,任意描述图结构的对象都可以根据问题定为静态或动态,所有对象都为静态则为传统的GNN问题。

实际上,在PyTorch Geometric Temporal定义的数据迭代器中,静态和动态的差别在于是以数组的列表还是以单一数组的形式输入,以及在输出时是按索引从列表中读取还是重复读取单一数组。

如在StaticGraphTemporalSignal的源码中_get_edge_index _get_features分别为:

# https://pytorch-geometric-temporal.readthedocs.io/en/latest/_modules/torch_geometric_temporal/signal/static_graph_temporal_signal.html#StaticGraphTemporalSignal

def _get_edge_index(self):
	if self.edge_index is None:
		return self.edge_index
	else:
		return torch.LongTensor(self.edge_index)
		
def _get_features(self, time_index: int):
	if self.features[time_index] is None:
    	return self.features[time_index]
    else:
    	return torch.FloatTensor(self.features[time_index])

对于Heterogeneous Graph的数据迭代器,其与普通Graph的差异在于对于每个类别建立键值对组成字典,其中的值按静态和动态定为列表或单一数组。

Recurrent Graph Convolutional Layers

Define $\ast_G $ as graph convolution, \(\odot\) as Hadamard product

\[\begin{aligned} &z = \sigma(W_{xz}\ast_Gx_t+W_{hz}\ast_Gh_{t-1}),\\ &r = \sigma(W_{xr}\ast_Gx_t+W_{hr}\ast_Gh_{t-1}),\\ &\tilde h = \text{tanh}(W_{xh}\ast_Gx_t+W_{hh}\ast_G(r\odot h_{t-1})),\\ &h_t = z \odot h_{t-1} + (1-z) \odot \tilde h \end{aligned} \]

From https://arxiv.org/abs/1612.07659

具体的函数实现见 https://pytorch-geometric-temporal.readthedocs.io/en/latest/modules/root.html#

与RNN的比较

\[\begin{aligned} &z_t = \sigma(W_{xz}x_t+b_{xz}+W_{hz}h_{t-1}+b_{hz}),\\ &r_t = \sigma(W_{xr}x_t+b_{xr}+W_{hr}h_{t-1}+b_{hr}),\\ &\tilde h_t = \text{tanh}(W_{xh}x_t+b_{xh}+r_t(W_{hh}h_{t-1}+b_{hh})),\\ &h_t = z*h_{t-1} + (1-z)*\tilde h \end{aligned} \]

From https://pytorch.org/docs/stable/generated/torch.nn.GRU.html#torch.nn.GRU

对于传统GRU的解析 https://zhuanlan.zhihu.com/p/32481747

在普通数据的Recurrent NN中,对于每一条时间序列数据会独立的计算各时间节点会根据上一时间节点计算hidden state。但在时间序列图数据中,每个snapshot被视为一个整体计算Hidden state matrix \(H \in \mathbb{R}^{\text{Num(Nodes)}\times \text{Out_Channels}_H}\) 和Cell state matrix(对于LSTM)\(C \in \mathbb{R}^{\text{Num(Nodes)}\times \text{Out_Channels}_C}\)。

与GCN的比较

相较于传统的Graph Convolution Layer,RGCN将图卷积计算的扩展到RNN各个状态的计算中替代原本的参数矩阵和特征的乘法计算。

标签:index,Graph,Temporal,Geometric,PyTorch,RGCN,节点
From: https://www.cnblogs.com/yc0806/p/16931208.html

相关文章

  • 高性能PyTorch训练
    参考:https://mp.weixin.qq.com/s/foB44Fm-IhX3yaawn_aZgg数据预处理几乎每个训练管道都以Dataset类开始。它负责提供数据样本。任何必要的数据转换和扩充都可能在此进......
  • pytorch torchvision.ops.roi_align 示例
    importtorchvisionimporttorchinput_=torch.rand(3,128,24,96)#[b,c,h,w]bbox=[[0,0.1,0.15,0.4,0.6],[0,0.1,0.15,0.4,0.6],[1,0.01,0.15,0.4,0......
  • Pytorch:使用Tensorboard记录训练状态
    我们知道TensorBoard是Tensorflow中的一个强大的可视化工具,它可以让我们非常方便地记录训练loss波动情况。如果我们是其它深度学习框架用户(如Pytorch),而想使用TensorBoard工......
  • ECMAScript 2022 & Temporal All In One
    ECMAScript2023&TemporalAllInOneES14/ES2023ES2015=>ES6...ES2022=>ES13ES2023=>ES14https://caniuse.com/sr_es13https://caniuse.com/sr_......
  • 带GPU的Pytorch安装【看看避坑啊!】
    之前写过一篇如何安装Pytorch的博客,但主要是CPU版本的,注意的事项还比较少。现在专门再记录一遍安装GPU版本的。CPU版本参考:Pytorch的安装前言一定要记住,先看自己电脑......
  • pytorch之model.zero_grad() 与 optimizer.zero_grad()
    转自https://cloud.tencent.com/developer/article/17108641.引言在PyTorch中,对模型参数的梯度置0时通常使用两种方式:model.zero_grad()和optimizer.zero_grad()。二......
  • PyTorch学习
    PyTorch学习1.关于环境的一些思维导图来源-B站小土堆2.关于环境的搭建Anaconda(1)anaconda安装安装网站(清华镜像):https://repo.anaconda.com/archive/下载完成......
  • pytorch中x.view()和permute用法
    x.view(),它表示将Tensor的维度转变为view指定的维度permute(),这个函数是做维度交换的torch.view()方法对张量改变“形状”其实并没有改变张量在内存中真正的形状。......
  • [NIPS 2022]Neural Temporal Walks Motif-Aware Representation Learning on Continuo
    NeuralTemporalWalks:Motif-AwareRepresentationLearningonContinuous-TimeDynamicGraphs介绍该文针对的是Continuous-TimeDynamicGraphs,也就是说边和点会随......
  • 论文复现|Panoptic Deeplab(全景分割PyTorch)
    摘要:这是发表于CVPR2020的一篇论文的复现模型。本文分享自华为云社区《PanopticDeeplab(全景分割PyTorch)》,作者:HWCloudAI。这是发表于CVPR2020的一篇论文的复现模型......