Pytorch Bi-LSTM + CRF 代码详解
久闻LSTM + CRF的效果强大,最近在看Pytorch官网文档的时候,看到了这段代码,前前后后查了很多资料,终于把代码弄懂了。我希望在后来人看这段代码的时候,直接就看我的博客就能完全弄懂这段代码。 看这个博客之前,我首先建议看看 Pytorch 关于Bi-LSTM + CRF的解释 看完再看看这位的博客 Bi-LSTM-CRF for Sequence Labeling PENG 这两部分内容都看完了之后,我就接着上面这位的博客继续讲,他讲的很好了,只是没有讲的更细致。 首先我们来看看Score的定义: 这部分博主的解释很详细了,这里我想多提醒一下的是,我们的每一个Score都是对应于一个完整的路径,举例说 【我 爱 中国人民】对应标签【N V N】那这个标签就是一个完整的路径,也就对应一个Score值。 接下来我想讲的是这个公式 这个公式成立是很显然的,动笔算一算就知道了,代码里其实就是用了这个公式的原理,但是这位博主并没有详细解释代码是怎么实现这个公式的,所以我就写下这篇博客来完成这位博主没有做完的工作。 先上代码 def _forward_alg(self, feats): # Do the forward algorithm to compute the partition function init_alphas = torch.Tensor(1, self