OpenNRE-PyTorch icon indicating copy to clipboard operation
OpenNRE-PyTorch copied to clipboard

Question about dropout in selector

Open WindChimeRan opened this issue 7 years ago • 0 comments

https://github.com/ShulinCao/OpenNRE-PyTorch/blob/master/networks/selector.py#L70

You use dropout after sen_matrix in the training stage, and not use it in the test stage.

I think the nuance of dropout should be manipulated by model.eval(), rather than by applying another similar function without dropout.

class One(Selector):
	def forward(self, x):
		tower_logits = []
		for i in range(len(self.scope) - 1):
			sen_matrix = x[self.scope[i] : self.scope[i + 1]]
			sen_matrix = self.dropout(sen_matrix)
			logits = self.get_logits(sen_matrix)
			score = F.softmax(logits, 1)
			_, k = torch.max(score, dim = 0)
			k = k[self.label[i]]
			tower_logits.append(logits[k])
		return torch.cat(tower_logits, 0)
	def test(self, x):
		tower_score = []
		for i in range(len(self.scope) - 1):
			sen_matrix = x[self.scope[i] : self.scope[i + 1]]
			logits = self.get_logits(sen_matrix)
			score = F.softmax(logits, 1)
			score, _ = torch.max(score, 0)
			tower_score.append(score)
		tower_score = torch.stack(tower_score)
		return list(tower_score.data.cpu().numpy())

WindChimeRan avatar Apr 13 '19 16:04 WindChimeRan