bilstm_crf_sequence_labeling_pytorch icon indicating copy to clipboard operation
bilstm_crf_sequence_labeling_pytorch copied to clipboard

How to change to only LSTM without CRF

Open funqc opened this issue 6 years ago • 2 comments

How should I calculate the loss with the mask?

funqc avatar Aug 02 '19 08:08 funqc

    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?

funqc avatar Aug 03 '19 07:08 funqc

I also want to know this, is that right? And how about predict? How to return best_path?

RunhangZhang avatar Nov 11 '20 03:11 RunhangZhang