| from sinir_agi import SinirAgi |
| from islemler import embed, dogrusal, softmax |
| from egitim import dogrusal_gradyan, guncelle, vektor_guncelle, cross_entropy_kayip |
|
|
| def basit_ileri(ag, token_idx): |
| x = [ag.embedding[token_idx]] |
| logitler = dogrusal(x, ag.cikti_W, ag.cikti_b) |
| return softmax(logitler[0]) |
|
|
| def basit_egitim(ag, girdi_idx, hedef_idx, ogrenme_hizi=0.01): |
| olasiliklar = basit_ileri(ag, girdi_idx) |
| kayip = cross_entropy_kayip(olasiliklar, hedef_idx) |
|
|
| grad = olasiliklar[:] |
| grad[hedef_idx] -= 1.0 |
| grad_matris = [grad] |
|
|
| x = [ag.embedding[girdi_idx]] |
| grad_x, grad_W, grad_b = dogrusal_gradyan(grad_matris, x, ag.cikti_W) |
|
|
| ag.cikti_W = guncelle(ag.cikti_W, grad_W, ogrenme_hizi) |
| ag.cikti_b = vektor_guncelle(ag.cikti_b, grad_b, ogrenme_hizi) |
|
|
| |
| for j in range(len(ag.embedding[girdi_idx])): |
| ag.embedding[girdi_idx][j] -= ogrenme_hizi * grad_x[0][j] |
|
|
| return kayip |
|
|
| |
| ag = SinirAgi(sozluk_boyutu=10, model_boyutu=16, ff_boyutu=32, kafa_sayisi=2, katman_sayisi=1) |
|
|
| MERHABA = 0 |
| BUGÜN = 1 |
|
|
| print("Egitim başlıyor: 'merhaba → bugün'") |
| for epoch in range(200): |
| kayip = basit_egitim(ag, MERHABA, BUGÜN) |
| if epoch % 20 == 0: |
| olasiliklar = basit_ileri(ag, MERHABA) |
| print(f"Epoch {epoch:3d} | Kayıp: {kayip:.4f} | P(bugün|merhaba): {olasiliklar[BUGÜN]:.4f}") |