def METHOD_NAME(self, sequence_output, attention_masks, hint_ids,
                   cross_attention_masks):
    """
    Args:
        sequence_output(tensor): 3-dimension tensor (batch size, sequence length, hidden size)
        attention_masks(tensor): attention mask, 2-dimension tensor (batch size, sequence length)
        hint_ids(tensor): token ids of prompt 2-dimension tensor (batch size, sequence length)
        cross_attention_masks(tensor): cross attention mask, 2-dimension tensor (batch size, sequence length)
    Default Returns:
        head_probs(tensor): 2-dimension tensor(batch size, sequence length)
        tail_probs(tensor): 2-dimension tensor(batch size, sequence length)
    """
    position_ids = torch.arange(hint_ids.size(1)).expand(
        (1, -1)) + sequence_output.size(1)
    position_ids = position_ids.to(sequence_output.device)
    hint_sequence_output = self.get_plm_sequence_output(
        hint_ids, cross_attention_masks, position_ids, is_hint=True)
    sequence_output = self.get_cross_attention_output(
        sequence_output, attention_masks, hint_sequence_output,
        cross_attention_masks)
    # (b, l, n)
    head_logits = self.head_clsf(sequence_output).squeeze(-1)
    tail_logits = self.tail_clsf(sequence_output).squeeze(-1)
    head_probs = head_logits + (1 - attention_masks) * -10000
    tail_probs = tail_logits + (1 - attention_masks) * -10000
    return head_probs, tail_probs