← Lesson
Sampling and Temperature
Joeven
Run
Reset
Python loads on first run
import math import random random.seed(3) def softmax(logits, T=1.0): scaled = [z / T for z in logits] m = max(scaled) exps = [math.exp(z - m) for z in scaled] total = sum(exps) return [e / total for e in exps] def sample(probs): u = random.random() acc = 0.0 for i, p in enumerate(probs): acc += p if u <= acc: return i return len(probs) - 1 tokens = ["search", "sql", "finish", "wait"] logits = [2.0, 1.0, 0.2, -1.0] for T in [0.2, 1.0, 2.0]: p = softmax(logits, T) print("T", T) for tok, pi in zip(tokens, p): print(" ", tok, round(pi, 3)) draws = [tokens[sample(p)] for _ in range(12)] print(" samples", draws) print("greedy", tokens[max(range(len(logits)), key=lambda i: logits[i])])
Run to execute this in your browser. Nothing is sent to a server.