Utmaning: Träna Perceptronen
Innan du fortsätter med att träna perceptronen, kom ihåg att den använder binär korsentropiförlustfunktion som diskuterats tidigare. Det sista viktiga begreppet innan implementering av backpropagation är formeln för derivatan av denna förlustfunktion med avseende på utgångsaktiveringar, an. Nedan visas formlerna för förlustfunktionen och dess derivata:
Ldan=−(ylog(y^)+(1−y)log(1−y^))=y^(1−y^)y^−ywhere an=y^
För att verifiera att perceptronen tränas korrekt skriver metoden fit() även ut genomsnittlig förlust vid varje epok. Detta beräknas genom att ta medelvärdet av förlusten över alla träningsdata i den 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))Slutligen är formlerna för att beräkna gradienter följande:
dzldWldbldal−1=dal⊙f′l(zl)=dzl⋅(al−1)T=dzl=(Wl)T⋅dzlExempeldatan för träning (X_train) tillsammans med motsvarande etiketter (y_train) är lagrade som NumPy-arrayer i filen utils.py. Dessutom är instanser av aktiveringsfunktionerna också definierade där:
relu = ReLU()
sigmoid = Sigmoid()
Swipe to start coding
Ditt mål är att slutföra träningsprocessen för en flerskiktsperceptron genom att implementera backpropagation och uppdatera modellparametrarna.
Följ dessa steg noggrant:
- Implementera
backward()-metoden iLayer-klassen:
- Beräkna följande gradienter:
dz: derivatan av förlusten med avseende på pre-aktiveringsvärdena, med hjälp av derivatan av aktiveringsfunktionen;
d_weights: gradienten av förlusten med avseende på vikterna, beräknad som skalärprodukten avdzoch den transponerade inmatningsvektorn;d_biases: gradienten av förlusten med avseende på bias, lika meddz;da_prev: gradienten av förlusten med avseende på aktiveringen i föregående lager, erhållen genom att multiplicera den transponerade viktmatrisen meddz.- Uppdatera vikter och bias med hjälp av inlärningshastigheten.
- Slutför
fit()-metoden iPerceptron-klassen:- Beräkna modellens utdata genom att anropa
forward()-metoden;
- Beräkna modellens utdata genom att anropa
- Beräkna förlusten med hjälp av korsentropiformeln;
- Beräkna dan — derivatan av förlusten med avseende på utdataaktiveringen;
- Loopa bakåt genom lagren och utför backpropagation genom att anropa varje lagers
backward()-metod.
- Loopa bakåt genom lagren och utför backpropagation genom att anropa varje lagers
- Kontrollera träningsbeteendet:
- Om allt är korrekt implementerat bör förlusten stadigt minska för varje epok när en inlärningshastighet på
0.01används.
Lösning
Tack för dina kommentarer!
single
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal
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
Utmaning: Träna Perceptronen
Svep för att visa menyn
Innan du fortsätter med att träna perceptronen, kom ihåg att den använder binär korsentropiförlustfunktion som diskuterats tidigare. Det sista viktiga begreppet innan implementering av backpropagation är formeln för derivatan av denna förlustfunktion med avseende på utgångsaktiveringar, an. Nedan visas formlerna för förlustfunktionen och dess derivata:
Ldan=−(ylog(y^)+(1−y)log(1−y^))=y^(1−y^)y^−ywhere an=y^
För att verifiera att perceptronen tränas korrekt skriver metoden fit() även ut genomsnittlig förlust vid varje epok. Detta beräknas genom att ta medelvärdet av förlusten över alla träningsdata i den 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))Slutligen är formlerna för att beräkna gradienter följande:
dzldWldbldal−1=dal⊙f′l(zl)=dzl⋅(al−1)T=dzl=(Wl)T⋅dzlExempeldatan för träning (X_train) tillsammans med motsvarande etiketter (y_train) är lagrade som NumPy-arrayer i filen utils.py. Dessutom är instanser av aktiveringsfunktionerna också definierade där:
relu = ReLU()
sigmoid = Sigmoid()
Swipe to start coding
Ditt mål är att slutföra träningsprocessen för en flerskiktsperceptron genom att implementera backpropagation och uppdatera modellparametrarna.
Följ dessa steg noggrant:
- Implementera
backward()-metoden iLayer-klassen:
- Beräkna följande gradienter:
dz: derivatan av förlusten med avseende på pre-aktiveringsvärdena, med hjälp av derivatan av aktiveringsfunktionen;
d_weights: gradienten av förlusten med avseende på vikterna, beräknad som skalärprodukten avdzoch den transponerade inmatningsvektorn;d_biases: gradienten av förlusten med avseende på bias, lika meddz;da_prev: gradienten av förlusten med avseende på aktiveringen i föregående lager, erhållen genom att multiplicera den transponerade viktmatrisen meddz.- Uppdatera vikter och bias med hjälp av inlärningshastigheten.
- Slutför
fit()-metoden iPerceptron-klassen:- Beräkna modellens utdata genom att anropa
forward()-metoden;
- Beräkna modellens utdata genom att anropa
- Beräkna förlusten med hjälp av korsentropiformeln;
- Beräkna dan — derivatan av förlusten med avseende på utdataaktiveringen;
- Loopa bakåt genom lagren och utför backpropagation genom att anropa varje lagers
backward()-metod.
- Loopa bakåt genom lagren och utför backpropagation genom att anropa varje lagers
- Kontrollera träningsbeteendet:
- Om allt är korrekt implementerat bör förlusten stadigt minska för varje epok när en inlärningshastighet på
0.01används.
Lösning
Tack för dina kommentarer!
single