← Lesson
Decoding
Joeven
Run
Reset
Python loads on first run
import math import random vocab = ["search", "sql", "finish", "wait"] logits = [2.4, 1.1, 0.3, -1.0] def softmax(logits, T=1.0): scaled = [x / T for x in logits] m = max(scaled) exps = [math.exp(x - m) for x in scaled] s = sum(exps) return [e / s for e in exps] def greedy(logits): i = max(range(len(logits)), key=lambda j: logits[j]) return vocab[i] def sample(probs, rng): r = rng.random() acc = 0.0 for i, p in enumerate(probs): acc += p if r <= acc: return vocab[i] return vocab[-1] print("greedy", greedy(logits)) for T in (0.2, 1.0, 2.0): probs = softmax(logits, T) print("T", T, "probs", [vocab[i] + "=" + str(round(probs[i], 3)) for i in range(len(vocab))]) rng = random.Random(0) print("samples T=1", [sample(softmax(logits, 1.0), rng) for _ in range(8)]) rng = random.Random(0) print("samples T=2", [sample(softmax(logits, 2.0), rng) for _ in range(8)]) print("wait logit is lowest; high T still lets it sneak in")
Run to execute this in your browser. Nothing is sent to a server.