问题标签 [pytorch-geometric]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
torch - torch_geometric.nn 中池化和全局池化的区别
我意识到torch_geometric 库同时提供了全局池化层和池化层,但我真的不明白这两个在应用于 Graph Neural Networks 时有什么区别?
pytorch - 您可以使用 pytorch 获得不同维度的最大张量吗?
给定一个长度为 15 的 pytorch 张量t
,是否有一种“好”的方法来获取该张量的不相交子集的最大值?具体来说,给定一个列表,l=(5,4,6)
我想要 的前 5 个元素的t
最大值,然后是接下来 4 个元素的最大值,最后 6 个元素的最大值。
如果 的元素l
相等,则可以对张量进行整形,并且可以在单个步骤中找到每行的最大值。但是当 l 的元素不同时,我看不出有一种方法可以很好地做到这一点,而不诉诸循环。很高兴找到一种可并行的方式来做到这一点。
对于上下文,我正在研究一个强化学习问题,其中我的状态是图表。动作只是图的一个顶点。我正在使用 DQN。当我从缓冲区中采样一批时,对于缓冲区中的每个图,我为每个顶点生成一个 Q 值,并且对于每个图,我想在这些 Q 值中找到最大值。但是,当图具有不同数量的顶点时,我会遇到上述问题:我看不到无需遍历批次即可获得每个图的最大 Q 值的方法。
以下是如何使用循环执行此操作的示例:
还有一个子集长度都相等的例子(我希望可能有一个与此类似的解决方案):
python - mini_batch 中不同的节点号
我对图神经网络相当陌生,我正在使用自我注意力训练一个 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 的维度是 self.w_q = Param(torch.Tensor(1181, 1181)) 在 batch2 中 wq, wk, wv 的维度是 self.w_q = Param(torch.Tensor (1134, 1134)) 维度随着节点的数量而变化,导致 w_q 不断被重新定义
这是否相当于模型只使用了一批样本?
如果是这样,我该如何解决这个问题?