"""本课独立实验；在仓库根目录执行 .venv/bin/python lessons/11/experiment.py。"""
import sys, json, math
from pathlib import Path
sys.path.insert(0, str(Path(__file__).resolve().parents[2]))
import torch
from torch import nn
from torch.nn import functional as F
from poetry_gpt.common import ROOT, DEFAULT_DATA, read_json, read_jsonl
from poetry_gpt.model import ModelConfig, PoetryGPT, CausalAttention, Block
from poetry_gpt.data import Tokenizer, SPECIAL, clean_record, keywords_for
from poetry_gpt.labs import show
torch.set_num_threads(2)
torch.manual_seed(26)

x = torch.tensor([[1.0, 0.0], [0.0, 1.0], [1.0, 1.0]])
wq = torch.tensor([[1.0, 1.0], [0.0, 1.0]])
wk = torch.tensor([[1.0, 0.0], [1.0, 1.0]])
wv = torch.tensor([[2.0, 0.0], [0.0, 1.0]])
q, k, v = (x @ wq, x @ wk, x @ wv)
show('Q', q.tolist())
show('K', k.tolist())
show('V', v.tolist())
show('QK转置/根号2', (q @ k.T / math.sqrt(2)).tolist())
