def _forward_alg(self, feats):
init_alphas = torch.Tensor(self.tagset_size, 1).fill_(-10000.).type(self.dtype)
init_alphas[self.tag_to_ix[self.START_TAG]][0] = 0.
forward_var = autograd.Variable(init_alphas).type(self.dtype)
for feat in feats:
forward_var = feat.view(self.tagset_size, 1) + log_sum_exp_mat(self.transitions + torch.transpose(forward_var.expand(forward_var.size(0), self.tagset_size), 0, 1), 1)
terminal_var = forward_var + self.transitions[self.tag_to_ix[self.STOP_TAG]].view(self.tagset_size, 1)
alpha = log_sum_exp_mat(terminal_var, 0)
return alpha
评论列表
文章目录