Ovu stranicu je najbolje pregledavati u modernom internet pregledniku s omogućenim JavaScriptom.

[NAISP] Gradivo

micho

TentationeM Skini si Pytorch i možeš svaki gradijent provjeriti.

Npr. za 3×4×1 mrežu sa sigmoidom nakon skrivenog sloja bi moglo ovako nešto:

import torch

l1 = torch.nn.Linear(3, 4)
a1 = torch.nn.Sigmoid()
l2 = torch.nn.Linear(4, 1)

# Ulazi i izlazi
inputs = torch.tensor([[0, 0, 1], [0, 1, 0], [1, 0, 0]])
outputs = torch.tensor([[0], [1], [2]])

loss_f = torch.nn.MSELoss()
optimizer = torch.optim.SGD([l1.parameters(), l2.parameters()], lr=1)

for i, x in enumerate(inputs):
    # Forward pass
    x = l1(x)
    x = a1(x)
    x = l2(x)

    # Backward pass
    loss = 0.5 * loss_f(x, outputs[i])
    loss.backward()

    print(f"Gradijenti l1 težina:\n{l1.weight.grad}")
    print(f"Gradijenti l2 težina:\n{l2.weight.grad}")
    print(f"Gradijenti l1 pomaka:\n{l1.bias.grad}")
    print(f"Gradijenti l2 pomaka:\n{l2.bias.grad}\n")

    # Ažuriranje parametara
    optimizer.step()

    # Reset gradijenata, pomaknuti izvan for petlje ako se radi o grupnom učenju
    optimizer.zero_grad()

Za specifične početne težine, mogu se inicijalizirati s npr.

torch.nn.init.constant_(l1.weight, 1)
torch.nn.init.constant_(l1.bias, 1)

ovo će postaviti težine i pomake 1. sloja na 1.


Kladivec

Zna netko kako riješiti ovaj zadatak? Nije mi jasan ovaj dio s aktivacijskim f-jama za izlaz 1 i 2.


micho

Kladivec Budem stavio to danas (dobio sam sve bodove iz toga), samo mi treba još malo da sredim ELEKRU materijale, a ono što je optimalno raditi je računati gradijente element po element, pa se backprop za različite aktivacije može napisati kao vektor formula i primijeniti elementwise na gradijent po izlazu

U ovom slučaju bi umjesto formule za EA bila:

EA^0 = EI^0 \cdot^* \begin{bmatrix} & \frac{\partial{y}}{\partial{tanh(x)}} & \\\\ & \frac{\partial{y}}{\partial{y}} & \end{bmatrix}


ssbb

M̵̧̩͑̀͝î̶͍̉ć̴̝̾́̀o̶̺̟̣͂̽ čisto da bacim svojih 5 centi, kada god se računaju greške matrice EI (za h i za 0, dakle EIh i EI0), ako su svi neuroni sigmoid, onda se koristi ona formula iz podsjetnika EA .* y .* (1 - y). Ono što je bitno zapamtit je da je ovaj y * (1 - y) zapravo derivacija izlaza neurona po ulazu u neuron. Neka je “u” ulaz u neuron, a “y” izlaz iz neurona nakon njegove aktivacijske funkcije. Za sigmoid imamo derivaciju: sigmoid’(u) = sigmoid(u) * (1 - sigmoid(u)) što je jednako y .* (1 - y), pri čemu je y izlaz iz neurona, odnosno sigmoid(u). Zato je formula EI = EA .* y .* (1 - y). Ako je neuron adaline, derivacija je uvijek jedan (adaline je pravac), pa je EI = EA .* 1 = EA. Ako su u sloju dve razlicite funkcije aktivacije, onda ih samo “kombiniramo”. Npr ako je gornji neuron tanh, a donji sigmoid, imamo ovo što je @M̵̧̩͑̀͝î̶͍̉ć̴̝̾́̀o̶̺̟̣͂̽ gore napisao.


TentationeM

Koliko su vam nakraju ispali rezultati neuronke iz ovogodišnjeg JIR-a?


doakes

Moze netko jednostavno napisati rjesenje(postupak) zadatka ovog sa neuronskim mrezama, a ne samo objasnjavati?


micho

doakes Daj mi 1-2 sata, da dođem doma i natipkan to, jučer sam nakon egzorcizma s latexom imao premalo snage napisati


stateboli

doakes rješenje su 0, za svaki izlaz njegovu aktivacijsku fju, tanh znači da se y*(1-y) množi sa 4 zbog derivacije tanh


orb-of-sadder

Jel moze netko objasniti sta se tocno trazi u ovom zadatku ? +


micho

orb-of-sadder Dvofazni simpleks + 2 linearna programa u b (tako je rekao Brčić)


micho

Stavio sam 2. zadatak na materijale, kad dovršim ispitni template ću staviti cijeli ispit:

https://github.com/studosi-fer/NAISP/blob/master/ispiti/rokovi/2019-20/NAISP_2019-20_jir-1_zadatak-2.pdf


sara

zna li netko kako ovo rjesiti?pretpostavljam da moramo skuziti kojim su redom upisana slova, pa po tom skicirati rb stablo , ali kako


micho

Gragas Nemaš baš nešto za skužiti, dali su ti BFS ispis, nacrtaj stablo tako da zadovoljava pravila i čitaj crvene čvorove

Prve 3 razine su ti potpune, A G S U Z O moraš skužiti kak staviti da bi bilo dobro binarno stablo


sara

M̵̧̩͑̀͝î̶͍̉ć̴̝̾́̀o̶̺̟̣͂̽


Dobro znaci ovo je stablo onda, i koji su mi sad tu crveni cvorovi? zar to ne ovisi o redosljedu upisivanja podataka?
Još jedno pitanje, jeli u RB stablu uvijek samo zadnja razina djelomicno popunjena, tj.jeli ono uvijek savrseno uravnotezeno?


micho

Gragas Dobro znaci ovo je stablo onda

Ovo nije binarno stablo nikako, S je veće od I

Gragas zar to ne ovisi o redosljedu upisivanja podataka?

Nebitno za zadatak

Gragas Još jedno pitanje, jeli u RB stablu uvijek samo zadnja razina djelomicno popunjena, tj.jeli ono uvijek savrseno uravnotezeno?

Da

EDIT: RB stablo je savršeno uravnoteženo ali to ne znači da mu je samo zadnja razina djelomično popunjena, nije nužno savršeno uravnoteženo


fPolic

M̵̧̩͑̀͝î̶͍̉ć̴̝̾́̀o̶̺̟̣͂̽
Nije RB savrseno balansirano, unesi npr. brojeve od 1-7 tim redom u stablo

A za zadatak ovaj, kad binarno stablo napravis, vidjet ces da je O sam u novoj razini, pa sigunrno nemoze bit crn jer bi postojao put od M -> O koji ima jedan crni cvor vise od ostalih puteva od M do nekog lista, za root znas da je crn, i ostalo si gledas da ti svi putevi od root do lista prolaze istim brojem crnih cvorova (vise rjesenja?)


micho

fPolic Skužio sam lapsus i ispravio, idem spavati sad


sara

d?


doakes

Gragas Mislim da je cak b), jer ako izbrises neki cvor moze doci do narusavanja ravnoteze u njegovom višem sloju a ne samo u trenutnom…. ispravite me ako sam krivo razumio


doakes

Je li postoji slučaj dvofaznog simpleksa kada se trazi MIN i imamo par jednadzbi u kojoj su npr 2 jednadbe imaju >= , dok jedna ima <= , kako onda dalje? ( ja koristim postupak ono gdje matricu transponiram pa trazim max od toga gdje prepostavim da su sve te nove jednadzbe pod uvjetom <=, sad jeli se tu prebacilo >= u <= i ako da sta onda ako je orginalno bilo <=?)


fPolic

b) je istina, (kod dodavanja; prvi i jedini koji treba intervenciju je onaj kojem je FR = +/- 2)
d) je takoder istina

c je neistina jer FR je jednak razlici visina podstabala, a ne razlici FR od djece?

sto se simplexa tice, kod dvofaznog nema transponiranja matrica, kod dvofaznog dodajes umjetne varijable ako imas (= ili >=)


« Prethodna stranica Sljedeća stranica »