single
Utfordring: Trening av Perseptronen
Sveip for å vise menyen
Før du går videre med å trene perseptronen, husk at den benytter binær kryssentropi-tapfunksjonen som tidligere diskutert. Det siste sentrale konseptet før implementering av tilbakepropagasjon er formelen for den deriverte av denne tapfunksjonen med hensyn til utgangsaktiveringene, an. Nedenfor vises formlene for tapfunksjonen og dens deriverte:
Ldan=−(ylog(y^)+(1−y)log(1−y^))=y^(1−y^)y^−yhvor an=y^
For å kontrollere at perseptronen trenes korrekt, skriver fit()-metoden også ut gjennomsnittlig tap for hver epoke. Dette beregnes ved å ta gjennomsnittet av tapet over alle treningsdataene i den aktuelle epoken:
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))Til slutt er formlene for å beregne gradientene som følger:
dzldWldbldal−1=dal⊙f′l(zl)=dzl⋅(al−1)T=dzl=(Wl)T⋅dzlEksempel treningsdata (X_train) sammen med tilhørende etiketter (y_train) er lagret som NumPy-arrays i filen utils.py. I tillegg er instanser av aktiveringsfunksjonene også definert der:
relu = ReLU()
sigmoid = Sigmoid()
Swipe to start coding
Målet ditt er å fullføre treningsprosessen for et flerlags perceptron ved å implementere tilbakepropagering og oppdatere modellparametrene.
Følg disse trinnene nøye:
- Implementer
backward()-metoden iLayer-klassen:
- Beregn følgende gradienter:
dz: den deriverte av tapet med hensyn til pre-aktiveringsverdiene, ved å bruke den deriverte av aktiveringsfunksjonen;d_weights: gradienten av tapet med hensyn til vektene, beregnet som prikkproduktet avdzog den transponerte input-vektoren;
d_biases: gradienten av tapet med hensyn til biasene, likdz;da_prev: gradienten av tapet med hensyn til aktiveringene i forrige lag, oppnådd ved å multiplisere den transponerte vektmatrisen meddz.- Oppdater vektene og biasene ved hjelp av læringsraten.
- Fullfør
fit()-metoden iPerceptron-klassen:- Beregn modellens output ved å kalle
forward()-metoden; - Kalkuler tapet ved hjelp av kryssentropi-formelen;
- Beregn modellens output ved å kalle
- Beregn dan — den deriverte av tapet med hensyn til utgangsaktiveringene;
- Gå bakover gjennom lagene og utfør tilbakepropagering ved å kalle hver lag sin
backward()-metode.
- Gå bakover gjennom lagene og utfør tilbakepropagering ved å kalle hver lag sin
- Sjekk treningsatferden:
- Hvis alt er implementert riktig, skal tapet jevnt synke for hver epoke når du bruker en læringsrate på
0.01.
Løsning
Takk for tilbakemeldingene dine!
single
Spør AI
Spør AI
Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår