INNER CODE UNIT · Python
gold_score
yxuansu/SimCTG · dialogue_generation/loss_func.py:53
gold_score = torch.unsqueeze(gold_score, -1)
assert gold_score.size() == torch.Size([bsz, seqlen, 1])
difference_matrix = gold_score - score_matrix
assert difference_matrix.size() == torch.Size([bsz, seqlen, seqlen])
loss_matrix = margin - difference_matrix # bsz x seqlen x seqlen
loss_matrix = torch.nn.functional.relu(loss_matrix)
### input mask
input_mask = torch.ones_like(input_ids).type(torch.FloatTensor)
if loss_matrix.is_cuda:
input_mask = input_mask.cuda(loss_matrix.get_device())
input_mask = input_mask.masked_fill(input_ids.eq(pad_token_id), 0.0)
if loss_matrix.is_cuda:
input_mask = input_mask.cuda(loss_matrix.get_device())
valid_len_list = torch.sum(input_mask, dim = -1).tolist()
loss_mask = build_mask_matrix(seqlen, [int(item) for item in valid_len_list], prefix_len)