首页 > 解决方案 > 使用 GCN-LSTM 为图表示的场景生成描述

问题描述

给定一个场景,我使用对象检测器检索其中包含的对象。接下来,我通过为每个一元关系指定最可能的属性(例如Cat,具有属性的对象,"Sitting"这意味着"The cat is sitting"每个二元关系最可能的谓词(例如,[Cup - Table]带有谓词的一对对象"On",这意味着"The cup is on the table")。

所有这些定义的关系都由一个有向图建模,其形式为:

下图显示了从场景构建关系图的示例。后者包含四个对象:"cup 1""cup 2""cat"a "table"。定义的关系是:

从场景生成的视觉关系图

目标是训练GCN-LSTM接收(输入)前一个图并返回(输出)描述(对应于该图,因此对应于初始场景)的 a。

对此的训练GCN-LSTM是通过为每个训练场景创建它的图形(输入)和输出是它的描述(一段)来完成的。例如,对于上图,描述(用于训练)是:"The cat standing on the table is next to a couple of cups"。上一个示例的过程如下图所示。

GCN-LSTM:输入和输出

我寻找了类似问题的实现示例GCN-LSTM(特别是在 的文档中StellarGraph),但我一无所获。所以,我想知道,有没有办法使用 构建这样的模型StellarGraph?如果是,如何?否则,哪个工具可以帮助我建立这个模型?

标签: pythonpython-3.xgraphlstmrelationship

解决方案


GCN-LSTM 设计用于对具有节点特征的图进行编码,这些节点特征是序列,并对这些序列进行预测。在这种情况下,看起来您可能正在尝试对具有固定特征的图进行编码,然后使用该编码来生成句子。

为此,合适的模型是使用图分类模型,例如GCNSupervisedGraphClassificationDeepGraphCNN。这些可用于将图形编码为向量,以输入到单独的 LSTM 解码器中。

值得注意的是,这些模型不能轻易地结合边缘特征/类型,因此必须调整//建模on的某些方面;例如作为特征并入节点中。next tostanding

例如,可以替换https://stellargraph.readthedocs.io/en/stable/demos/graph-classification/gcn-supervised-graph-classification.html#Create-theDense(units=1, activation="sigmoid")中的最后一层(或更多Dense层)-Keras-graph-classification-model具有更复杂的解码器模型(即 LSTM)。

(这个答案是从我对 StellarGraph 社区论坛上提出的一个非常相似(相同?)的问题的回答中复制而来的:originalarchive。)


推荐阅读