Udfordring: Træning af Perceptronen
Før du fortsætter med at træne perceptronen, skal du være opmærksom på, at den anvender binary cross-entropy tab-funktionen, som tidligere er blevet gennemgået. Det sidste centrale begreb før implementering af backpropagation er formlen for afledte af denne tab-funktion med hensyn til output-aktiveringerne, an. Nedenfor ses formlerne for tab-funktionen og dens afledte:
Ldan=−(ylog(y^)+(1−y)log(1−y^))=y^(1−y^)y^−yhvor an=y^
For at verificere at perceptronen trænes korrekt, udskriver fit()-metoden også gennemsnitligt tab ved hver epoke. Dette beregnes ved at tage gennemsnittet af tabet over alle træningseksempler i den pågældende epoke:
for epoch in range(epochs):
loss = 0
for i in range(training_data.shape[0]):
loss += -(target * np.log(output) + (1 - target) * np.log(1 - output))
average_loss = loss[0, 0] / training_data.shape[0]
print(f'Loss at epoch {epoch + 1}: {average_loss:.3f}')
L=−N1i=1∑N(yilog(y^i)+(1−yi)log(1−y^i))Endelig er formlerne til beregning af gradienter som følger:
dzldWldbldal−1=dal⊙f′l(zl)=dzl⋅(al−1)T=dzl=(Wl)T⋅dzlDe eksemplariske træningsdata (X_train) sammen med de tilsvarende etiketter (y_train) er gemt som NumPy-arrays i filen utils.py. Derudover er instanser af aktiveringsfunktionerne også defineret der:
relu = ReLU()
sigmoid = Sigmoid()
Swipe to start coding
Dit mål er at fuldføre træningsprocessen for en multilagsperceptron ved at implementere backpropagation og opdatere modelparametrene.
Følg disse trin nøje:
- Implementér
backward()-metoden iLayer-klassen:
- Beregn følgende gradienter:
dz: afledt af tabet med hensyn til præaktiveringsværdierne, ved brug af den afledte af aktiveringsfunktionen;d_weights: gradient af tabet med hensyn til vægtene, beregnet som prikproduktet afdzog den transponerede inputvektor;d_biases: gradient af tabet med hensyn til bias, svarende tildz;da_prev: gradient af tabet med hensyn til aktiveringerne fra det forrige lag, opnået ved at multiplicere den transponerede vægtmatrix meddz.- Opdater vægte og bias ved hjælp af læringsraten.
- Fuldfør
fit()-metoden iPerceptron-klassen:- Beregn modeloutput ved at kalde
forward()-metoden;
- Beregn modeloutput ved at kalde
- Beregn tabet ved hjælp af krydsentropiformlen;
- Beregn dan — den afledte af tabet med hensyn til outputaktiveringerne;
- Gå baglæns gennem lagene og udfør backpropagation ved at kalde hvert lags
backward()-metode.
- Gå baglæns gennem lagene og udfør backpropagation ved at kalde hvert lags
- Kontrollér træningsforløbet:
- Hvis alt er implementeret korrekt, bør tabet falde støt for hver epoke, når der bruges en læringsrate på
0.01.
Løsning
Tak for dine kommentarer!
single
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat
Can you explain how the derivative of the binary cross-entropy loss is used in backpropagation?
What is the purpose of printing the average loss at each epoch?
Can you clarify how the gradients are computed using the provided formulas?
Awesome!
Completion rate improved to 4
Udfordring: Træning af Perceptronen
Stryg for at vise menuen
Før du fortsætter med at træne perceptronen, skal du være opmærksom på, at den anvender binary cross-entropy tab-funktionen, som tidligere er blevet gennemgået. Det sidste centrale begreb før implementering af backpropagation er formlen for afledte af denne tab-funktion med hensyn til output-aktiveringerne, an. Nedenfor ses formlerne for tab-funktionen og dens afledte:
Ldan=−(ylog(y^)+(1−y)log(1−y^))=y^(1−y^)y^−yhvor an=y^
For at verificere at perceptronen trænes korrekt, udskriver fit()-metoden også gennemsnitligt tab ved hver epoke. Dette beregnes ved at tage gennemsnittet af tabet over alle træningseksempler i den pågældende epoke:
for epoch in range(epochs):
loss = 0
for i in range(training_data.shape[0]):
loss += -(target * np.log(output) + (1 - target) * np.log(1 - output))
average_loss = loss[0, 0] / training_data.shape[0]
print(f'Loss at epoch {epoch + 1}: {average_loss:.3f}')
L=−N1i=1∑N(yilog(y^i)+(1−yi)log(1−y^i))Endelig er formlerne til beregning af gradienter som følger:
dzldWldbldal−1=dal⊙f′l(zl)=dzl⋅(al−1)T=dzl=(Wl)T⋅dzlDe eksemplariske træningsdata (X_train) sammen med de tilsvarende etiketter (y_train) er gemt som NumPy-arrays i filen utils.py. Derudover er instanser af aktiveringsfunktionerne også defineret der:
relu = ReLU()
sigmoid = Sigmoid()
Swipe to start coding
Dit mål er at fuldføre træningsprocessen for en multilagsperceptron ved at implementere backpropagation og opdatere modelparametrene.
Følg disse trin nøje:
- Implementér
backward()-metoden iLayer-klassen:
- Beregn følgende gradienter:
dz: afledt af tabet med hensyn til præaktiveringsværdierne, ved brug af den afledte af aktiveringsfunktionen;d_weights: gradient af tabet med hensyn til vægtene, beregnet som prikproduktet afdzog den transponerede inputvektor;d_biases: gradient af tabet med hensyn til bias, svarende tildz;da_prev: gradient af tabet med hensyn til aktiveringerne fra det forrige lag, opnået ved at multiplicere den transponerede vægtmatrix meddz.- Opdater vægte og bias ved hjælp af læringsraten.
- Fuldfør
fit()-metoden iPerceptron-klassen:- Beregn modeloutput ved at kalde
forward()-metoden;
- Beregn modeloutput ved at kalde
- Beregn tabet ved hjælp af krydsentropiformlen;
- Beregn dan — den afledte af tabet med hensyn til outputaktiveringerne;
- Gå baglæns gennem lagene og udfør backpropagation ved at kalde hvert lags
backward()-metode.
- Gå baglæns gennem lagene og udfør backpropagation ved at kalde hvert lags
- Kontrollér træningsforløbet:
- Hvis alt er implementeret korrekt, bør tabet falde støt for hver epoke, når der bruges en læringsrate på
0.01.
Løsning
Tak for dine kommentarer!
single