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各个状态的计算中替代原本的参数矩阵和特征的乘法计算。

PyTorch Geometric Temporal 介绍 —— 数据结构和RGCN的概念的更多相关文章

  1. 图神经网络 PyTorch Geometric 入门教程

    简介 Graph Neural Networks 简称 GNN,称为图神经网络,是深度学习中近年来一个比较受关注的领域.近年来 GNN 在学术界受到的关注越来越多,与之相关的论文数量呈上升趋势,GNN ...

  2. 如何入门Pytorch之一:Pytorch基本知识介绍

    前言 PyTorch和Tensorflow是目前最为火热的两大深度学习框架,Tensorflow主要用户群在于工业界,而PyTorch主要用户分布在学术界.目前视觉三大顶会的论文大多都是基于PyTor ...

  3. 【小白学PyTorch】9 tensor数据结构与存储结构

    文章来自微信公众号[机器学习炼丹术]. 上一节课,讲解了MNIST图像分类的一个小实战,现在我们继续深入学习一下pytorch的一些有的没的的小知识来作为只是储备. 参考目录: @ 目录 1 pyto ...

  4. 【PHP数据结构】图的概念和存储结构

    随着学习的深入,我们的知识也在不断的扩展丰富.树结构有没有让大家蒙圈呢?相信我,学完图以后你就会觉得二叉树简直是简单得没法说了.其实我们说所的树,也是图的一种特殊形式. 图的概念 还记得我们学习树的第 ...

  5. GCD介绍(一): 基本概念和Dispatch Queue

    什么是GCD? Grand Central Dispatch或者GCD,是一套低层API,提供了一种新的方法来进行并发程序编写.从基本功能上讲,GCD有点像NSOperationQueue,他们都允许 ...

  6. 0.数据结构(python语言) 基本概念 算法的代价及度量!!!

    先看思维导图: *思维导图有点简陋,本着循循渐进的思想,这小节的知识大多只做了解即可. *重点在于算法的代价及度量!!!查找资料务必弄清楚. 零.四个基本概念 问题:一个具体的需求 问题实例:针对问题 ...

  7. Pandas 数据结构Dataframe:基本概念及创建

    "二维数组"Dataframe:是一个表格型的数据结构,包含一组有序的列,其列的值类型可以是数值.字符串.布尔值等. Dataframe中的数据以一个或多个二维块存放,不是列表.字 ...

  8. 【数据结构&算法】08-栈概念&源码

    目录 前言 栈的定义 定义 常见应用 栈的常见应用 进栈出栈变化形式 栈的抽象数据类型 栈的顺序存储结构及实现 栈的顺序存储结构 顺序栈 顺序栈的结构定义 两栈共享空间 栈的链式存储结构及实现 栈的链 ...

  9. 【转】简单了介绍js中的一些概念(词法结构) 和 数据类型(部分)。

    1 , javascript字符集: javascript采用的是Unicode字符集编码. 为什么要采用这个编码呢? 原因很简单,16位的Unicode编码可以表示地球人的任何书面语言.这是语言 国 ...

  10. 第4节 Scala中的actor介绍:1、actor概念介绍;2、actor执行顺序和发送消息的方式

    10.    Scala Actor并发编程 10.1.   课程目标 10.1.1.    目标一:熟悉Scala Actor并发编程 10.1.2.    目标二:为学习Akka做准备 注:Sca ...

随机推荐

  1. 一文读懂,硬核 Apache DolphinScheduler3.0 源码解析

    ​ 点亮 ️ Star · 照亮开源之路 https://github.com/apache/dolphinscheduler 本文目录 1 DolphinScheduler的设计与策略 1.1 分布 ...

  2. 头文件与main函数

    头文件 1.为什么要使用头文件? 程序如戏 程序中有很多元素(std::cout, system), 都是一个个演员 但是他们之间都互不认识, 但是却要一起合作, 强行编译, 就会导致错误! 得预先介 ...

  3. 1.云原生之Docker容器技术基础知识介绍

    转载自:https://www.bilibili.com/read/cv15180540/?from=readlist

  4. Elasticsearch:用户安全设置

    Elastic Stack的组件是不安全的,因为它没有内置的固有安全性. 这意味着任何人都可以访问它. 在生产环境中运行Elastic Stack时,这会带来安全风险. 为了防止生产中未经授权的访问, ...

  5. 使用Prometheus和Grafana监控RabbitMQ集群 (使用RabbitMQ自带插件)

    配置RabbitMQ集群 官方文档:https://www.rabbitmq.com/prometheus.html#quick-start 官方github地址:https://github.com ...

  6. 第五章:Admin管理后台

    Django奉行Python的内置电池哲学.它自带了一系列在Web开发中用于解决常见问题或需求的额外的.可选工具.这些工具和插件,例如django.contrib.redirects都必须在setti ...

  7. My life of Honker Security Commando

    红客突击队 && 红客突击分队 红客突击队,于2019年,由队长k龙联合国内多位顶尖高校研究生牵头成立.其团队从成立至今多次参加国际网络安全竞赛并取得良好成绩,积累了丰富的竞赛经验.团 ...

  8. Leetcode链表

    Leetcode链表 一.闲聊 边学边刷的--慢慢写慢慢更 二.题目 1.移除链表元素 题干: 思路: 删除链表节点,就多了一个判断等值. 由于是单向链表,所以要删除节点时要找到目标节点的上一个节点, ...

  9. Volatile介绍

    介绍 volatile 是 Java 虚拟机提供的轻量级的同步机制,它可以保证可见性(缓存一致性协议)和有序性(禁止指令重排序,也就是通过内存屏障来实现),但是不保证原子性. JMM 介绍 JMM 是 ...

  10. 自建流媒体如何录制视频。齐博x1齐博x2齐博x3齐博x4齐博x5齐博x6齐博x7齐博x8齐博x9齐博x10

    http://x1.eapis.site/ 先打开配置文件\conf\config.php 里边的内容大概如下,第一项是必须要配置的,换成你的网站域名网址.第二项,如果流媒体服务器配置了https证书 ...