Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

关于StructInduction 类 #26

Open
VinnyHu opened this issue Aug 24, 2020 · 4 comments
Open

关于StructInduction 类 #26

VinnyHu opened this issue Aug 24, 2020 · 4 comments

Comments

@VinnyHu
Copy link

VinnyHu commented Aug 24, 2020

"""STEP1: Calculating Attention Matrix"""
if (self.bidirectional): # bidirectional = True
input = input.view(batch_size, token_size, 2, dim_size // 2)
sem_v = torch.cat((input[:, :, 0, :self.sem_dim_size // 2], input[:, :, 1, :self.sem_dim_size // 2]), 2)
str_v = torch.cat((input[:, :, 0, self.sem_dim_size // 2:], input[:, :, 1, self.sem_dim_size // 2:]), 2)
else:
sem_v = input[:, :, :self.sem_dim_size]
str_v = input[:, :, self.sem_dim_size:]

您好,这里我没有看懂。
问题1:我理解的input的维度为 batch * mention node-num + entity-node-num + mdp-node-num * hidden-size,不知道这里是否正确。
问题2:这几行代码您根据 bidirectional 把 hidden-size 拆分成了2份了
input = input.view(batch_size, token_size, 2, dim_size // 2)
这里的bidirectional 是指的是什么呢? 和BiLSTM编码那里的一样吗?但是那里的拼接后的向量,不是又通过了linear层进行转换维度了呢?
问题3:sem-v 与 str-v分别是什么意思?

StructInduction 类的功能 应该是将 mention node entity node mdp node 通过18那那篇文章的计算方式,得到邻接矩阵,然后传给densely gcn层更新。

@VinnyHu
Copy link
Author

VinnyHu commented Aug 25, 2020

https://github.com/vidhishanair/structured-text-representations 中的实现里面,是在encoder那里经过BiLSTM之后,把原来hidden-size 变为之前的2倍了,sem_dim_size 已经扩大了2倍了。
但是在您的实现里面,经过BiLSTM之后,又已经经过了
context_output = self.dropout_rate(torch.relu(self.linear_re(docs_rep)))
将维度从2*hidden-size 变成了hidden-size了,为什么还要经过 上面的切分呢?
那这样的切分不就是没有意义了嘛?
所以我想问下 您这里是否实现错误了?

@nanguoshun
Copy link
Owner

@VinnyHu 谢谢提问。 1)我原代码中的维度应该是没有问题的。 2)& 3) 这种切分是参考了 https://arxiv.org/abs/1705.09207中的做法,将vector分割成两部分,分别用于学习semantic information和structure attention,也可以不切分,我当时实验发现两者基本上没太多区别,代码中也保留了这个方法。如有兴趣可以 https://arxiv.org/abs/1705.09207中的Section 3.1

@VinnyHu
Copy link
Author

VinnyHu commented Aug 31, 2020

@VinnyHu 谢谢提问。 1)我原代码中的维度应该是没有问题的。 2)& 3) 这种切分是参考了 https://arxiv.org/abs/1705.09207中的做法,将vector分割成两部分,分别用于学习semantic information和structure attention,也可以不切分,我当时实验发现两者基本上没太多区别,代码中也保留了这个方法。如有兴趣可以 https://arxiv.org/abs/1705.09207中的Section 3.1

好的,谢谢您的回复

@nanguoshun
Copy link
Owner

@VinnyHu 这儿也是参考了DocRED最初的代码,多1层FFN可以增加模型的拟合能力,所以保留没有变化,你可以尝试删除这层FFN后看看效果

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants