oev-demo / oev /calibrate.py
divyanshudhruv's picture
Upload folder using huggingface_hub
cbe9a94 verified
Raw History Blame Contribute Delete
607 Bytes
import torch
def apply_temperature(logits, temperature):
return logits / temperature
def fit_temperature_from_logits(logits, labels, max_iter=200, lr=0.05):
logits = logits.detach().float().cpu()
labels = labels.detach().cpu()
log_t = torch.zeros(1, requires_grad=True)
opt = torch.optim.LBFGS([log_t], max_iter=max_iter, lr=lr)
labels = labels.long()
def closure():
opt.zero_grad()
loss = torch.nn.functional.cross_entropy(logits / log_t.exp(), labels)
loss.backward()
return loss
opt.step(closure)
return float(log_t.exp().item())