pytorch_geometric(pyg)复现T-GCN

本文介绍如何使用pyg复现T-GCN模型,详细阐述了在复现过程中遇到的静态图与动态图问题,以及数据集构建和模型搭建的步骤。通过对比源码,揭示了模型实现的细节,包括T-GCN的计算公式,并分享了在复现过程中关于模型训练和超参数调整的经验。
摘要由CSDN通过智能技术生成

前言

上一篇文章从pyg提供的基本工具出发,介绍了pyg。但是大家用三方库,一般是将其作为积木来构建一个比较大的模型,把它用在自己的数据集上,而不是满足于跑跑demo里的简单模型和标准数据集。因此本文将从复现T-GCN(论文和官方源码见此)的角度出发,讲述怎么使用pyg搭建一个GNN-RNN模型,包括数据集的构建和模型的搭建。

刚开始复现的时候,我踩了很多坑,有的坑是因为不熟悉pyg踩的,有的坑是因为作者论文里和源码里的模型不一致踩的。这里说是复现,但是是以作者源码里的模型为准。那你可能会问了,都有源码了,我在这里吵吵啥“复现”呢?因为源码不是采用pyg写的,而是使用了原始的GCN计算方式,使用一些矩阵乘法做的。

前置准备

虽然我不是作者团队的……但是我觉得还是有必要介绍一下这篇文章的模型和数据集

T-GCN介绍

这里介绍的T-GCN的全称是Traffic-GCN,同学们有可能会在别的地方看到这个简称,但是不一定指的是这个模型。

T-GCN的核心模型结构是使用了GCN+GRU二者组合,先使用GCN得到更丰富的节点特征,再将每个节点的特征都送入GRU中进行计算。相当于使用GCN聚合空间特征,再使用GRU聚合时序特征,具体的计算公式如下。需要注意的是,每次输入的都是当前时间的特征和GRU的隐层特征,二者拼接后作为T-GCN-Cell(可以认为是T-GCN内部的一层卷积)的输入。

C o n v t ( X t , h t ) = L ⋅ c o n c a t ( X t , h t ) G R U ( X t , h t ) = u t = σ ( W u C o n v t ( X t , h t ) + b u ) r t = σ ( W r C o n v t ( X t , h t ) + b r ) c t = t a n h ( W c C o n v t ( X t , h t ) + b c ) h t + 1 = u t ∗ h t + ( 1 − u t ) ∗ c t Conv_t(X_{t},h_{t})=L\cdot concat(X_{t},h_{t})\\ GRU(X_{t},h_{t})= \begin{aligned} u_t & = \sigma(W_uConv_t(X_{t},h_{t})+b_u) \\ r_t & = \sigma(W_rConv_t(X_{t},h_{t})+b_r) \\ c_t & = tanh(W_cConv_t(X_{t},h_{t})+b_c)\\ h_{t+1} & = u_t*h_t+(1-u_t)*c_t \end{aligned}\\ Convt(Xt,ht)=Lconcat(Xt,ht)GRU(Xt,ht)=utr

评论 21
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值