Open mz2sj opened 4 years ago
第一个问题我是觉得,我用这个relation作attention,那么我默认这个包的label就是relation,那我们也应该取relation对应的维度结果作为概率
- 不好意思,第一个问题没太看明白,在PCNN-ATT中,在test的时候,就是在遍历每个relation去计算这个relation的概率,假设一共54个relation, 当前遍历到第4个relation,那么首先用这个relation去做attention,之后算出54个概率,取第四个作为这个的预测概率。
- 第二个问题,对。排名之后,取Top2000
按照这种假设,每一个bag最后输出的特征形状是54*54, 每一行代表每一种relation,那么代码中每一行取max似乎不合理,应该取对角线元素才对?
@shanry 对,当时一开始我记得是按照对角线元素取的,这个你可以看下代码里面其实有段注释。 后来改成max 了, 原因好像是因为原文最开始版本代码取的max。。不过这两个效果类似。
博主您好,在test的时候,我们遍历所有的relation进行attention。
res = torch.cat(pre_y, 1).max(1)[0]
假设使用label 0 ([6901])这个relation来作attention,将attention后的结果用于计算各个关系的概率分布。 ` out = self.test_scale_p bags_feature.mm(self.rel_embs.t()) + self.rel_bias` ([128,53]) 这里的max是指在第2维度取最大值作为label 0这个relation的概率吗?依次类推遍历所有relation,就能得到在所有relation上的概率。 这里可不可以不作max,直接取out中label 0对应的维度所对应的概率作为结果。 还有一个问题,PCNN-ATT中eval_metric_var,这是直接对预测概率排名前2000的计算pr吗?