Views
No views yet
block_size characters.C: maps each character to a learned emb_dim-dimensional vectorW1: linear + tanh, input size block_size * emb_dimW2: projects to vocab_size logits (27 classes: a–z + end token)| Hyperparameter | Value |
|---|---|
| block_size | 3 |
| emb_dim | 10 |
| hidden_dim | 200 |
| vocab_size | 27 |
1import torch
2import torch.nn.functional as F
3from transformers import AutoModelForCausalLM, AutoTokenizer
4
5model = AutoModelForCausalLM.from_pretrained("iand666/makemore-mlp", trust_remote_code=True)
6tok = AutoTokenizer.from_pretrained("iand666/makemore-mlp", trust_remote_code=True)
7model.eval()
8
9def gen_name(model, tok, block_size=3):
10 context = [0] * block_size
11 name = ""
12 with torch.no_grad():
13 while True:
14 x = torch.tensor([context])
15 logits = model(x)["logits"]
16 probs = F.softmax(logits, dim=-1)
17 nxt = int(torch.multinomial(probs[0], num_samples=1).item())
18 context = context[1:] + [nxt]
19 if nxt == 0:
20 break
21 name += tok.convert_ids_to_tokens(nxt)
22 return name
23
24for _ in range(10):
25 print(gen_name(model, tok))