def get_confidence(
model,
inputs,
thought_idx,
thought_hidden_states,
k=10,
):
inputs['inputs_embeds'][0, thought_idx[0]:thought_idx[1]] = thought_hidden_states
logits = model(**inputs, return_dict=True)['logits'][0]
probs = torch.softmax(logits, dim=-1)
confidence = 0.0
for idx in range(thought_idx[0], thought_idx[1] + 1):
topk = torch.topk(probs[idx], k=k, largest=True)[0]
confidence -= torch.sum(torch.log(topk + 1e-10)) / k
num_tokens = thought_idx[1] - thought_idx[0] + 1
return confidence / num_tokens
def get_confidence(
model,
inputs,
thought_idx,
thought_hidden_states,
k=10,
):
inputs['inputs_embeds'][0, thought_idx[0]:thought_idx[1]] = thought_hidden_states
logits = model(**inputs, return_dict=True)['logits'][0]
probs = torch.softmax(logits, dim=-1)
confidence = 0.0
for idx in range(thought_idx[0], thought_idx[1] + 1):
topk = torch.topk(probs[idx], k=k, largest=True)[0]
confidence -= torch.sum(torch.log(topk + 1e-10)) / k
num_tokens = thought_idx[1] - thought_idx[0] + 1
return confidence / num_tokens