1

我对图神经网络相当陌生,我正在使用自我注意力训练一个 GNN 模型,我有几个问题。

问题是我的节点数和 node_num 在每批中都不同,因此在第一批中我有:

批次(批次=[1181],edge_attr=[1975, 3],edge_index=[2, 1975],x=[1181, 300])

在第二批我有: batch=[1134], edge_attr=[1635, 3], edge_index=[2, 1635], x=[1134, 300]

batch1 有 1181 个节点,而 batch2 有 1134 个节点

当我试图计算节点之间的self attention时,我遇到了以下问题

这是自我关注的工作原理

在此处输入图像描述

Q、W、K 计算如下: 在此处输入图像描述

wq, wk, wv 的维数为

self.w_1 = 参数(torch.Tensor(self.nodes_num, self.nodes_num))

所以我遇到的问题是这个

在 batch1 中 wq, wk, wv 的维度是 s​​elf.w_q = Param(torch.Tensor(1181, 1181)) 在 batch2 中 wq, wk, wv 的维度是 s​​elf.w_q = Param(torch.Tensor (1134, 1134)) 维度随着节点的数量而变化,导致 w_q 不断被重新定义

这是否相当于模型只使用了一批样本?

如果是这样,我该如何解决这个问题?

4

0 回答 0