Utfordring: Trene Perseptronen
Før du går videre med å trene perseptronen, husk at den bruker binær kryssentropi-tapfunksjonen som ble diskutert tidligere. Det siste viktige konseptet før implementering av tilbakepropagasjon er formelen for den deriverte av denne tapfunksjonen med hensyn til utgangsaktiveringene, an. Nedenfor er formlene for tapfunksjonen og dens deriverte:
Ldan=−(ylog(y^)+(1−y)log(1−y^))=y^(1−y^)y^−yhvor an=y^
For å verifisere at perseptronen trenes korrekt, skriver fit()
-metoden også ut gjennomsnittlig tap ved 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⋅dzlEksempeldata for trening (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
- Beregn følgende gradienter:
dz
,d_weights
,d_biases
ogda_prev
ibackward()
-metoden tilLayer
-klassen. - Beregn
output
til modellen ifit()
-metoden tilPerceptron
-klassen. - Beregn
da
(dan) før løkken, som er gradienten til tapet med hensyn til utgangsaktiveringer. - Beregn
da
og utfør tilbakepropagering i løkken ved å kalle riktig metode for hvert av lagene.
Hvis du har implementert treningen korrekt, skal tapet reduseres jevnt for hver epoke med læringsraten 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
Awesome!
Completion rate improved to 4
Utfordring: Trene Perseptronen
Sveip for å vise menyen
Før du går videre med å trene perseptronen, husk at den bruker binær kryssentropi-tapfunksjonen som ble diskutert tidligere. Det siste viktige konseptet før implementering av tilbakepropagasjon er formelen for den deriverte av denne tapfunksjonen med hensyn til utgangsaktiveringene, an. Nedenfor er formlene for tapfunksjonen og dens deriverte:
Ldan=−(ylog(y^)+(1−y)log(1−y^))=y^(1−y^)y^−yhvor an=y^
For å verifisere at perseptronen trenes korrekt, skriver fit()
-metoden også ut gjennomsnittlig tap ved 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⋅dzlEksempeldata for trening (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
- Beregn følgende gradienter:
dz
,d_weights
,d_biases
ogda_prev
ibackward()
-metoden tilLayer
-klassen. - Beregn
output
til modellen ifit()
-metoden tilPerceptron
-klassen. - Beregn
da
(dan) før løkken, som er gradienten til tapet med hensyn til utgangsaktiveringer. - Beregn
da
og utfør tilbakepropagering i løkken ved å kalle riktig metode for hvert av lagene.
Hvis du har implementert treningen korrekt, skal tapet reduseres jevnt for hver epoke med læringsraten 0.01
.
Løsning
Takk for tilbakemeldingene dine!
single