bilstm_crf_sequence_labeling_pytorch
bilstm_crf_sequence_labeling_pytorch copied to clipboard
How to change to only LSTM without CRF
How should I calculate the loss with the mask?
def neg_log_likelihood(self, seq, tags, mask):
feats = self.get_lstm_features(seq, mask)
seq_len, batch_size, tag_size = feats.size()
tag_scores = F.log_softmax(feats, dim=1) * mask.unsqueeze(-1)
loss = feats.new_zeros(seq_len)
loss_function = nn.NLLLoss()
for t, tag_score in enumerate(tag_scores):
loss[t] = loss_function(tag_score, tags[t])
return loss.sum()
It's that right?
I also want to know this, is that right? And how about predict? How to return best_path?