Sfida: Addestramento del Percettrone
Prima di procedere con l'addestramento del percettrone, è importante ricordare che utilizza la funzione di perdita entropia incrociata binaria discussa in precedenza. L'ultimo concetto chiave prima di implementare la retropropagazione è la formula per la derivata di questa funzione di perdita rispetto alle attivazioni di output, an. Di seguito sono riportate le formule per la funzione di perdita e la sua derivata:
Ldan=−(ylog(y^)+(1−y)log(1−y^))=y^(1−y^)y^−ydove an=y^
Per verificare che il percettrone si stia addestrando correttamente, il metodo fit()
stampa anche la perdita media a ogni epoca. Questa viene calcolata facendo la media della perdita su tutti gli esempi di addestramento in quell'epoca:
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))Infine, le formule per il calcolo dei gradienti sono le seguenti:
dzldWldbldal−1=dal⊙f′l(zl)=dzl⋅(al−1)T=dzl=(Wl)T⋅dzlI dati di addestramento di esempio (X_train
) insieme alle etichette corrispondenti (y_train
) sono memorizzati come array NumPy nel file utils.py
. Inoltre, le istanze delle funzioni di attivazione sono anch'esse definite lì:
relu = ReLU()
sigmoid = Sigmoid()
Swipe to start coding
- Calcolare i seguenti gradienti:
dz
,d_weights
,d_biases
eda_prev
nel metodobackward()
della classeLayer
. - Calcolare l'
output
del modello nel metodofit()
della classePerceptron
. - Calcolare
da
(dan) prima del ciclo, che rappresenta il gradiente della funzione di perdita rispetto alle attivazioni di output. - Calcolare
da
ed eseguire la retropropagazione nel ciclo chiamando il metodo appropriato per ciascuno degli strati.
Se l'addestramento è stato implementato correttamente, dato il learning rate di 0.01
, la perdita dovrebbe diminuire costantemente a ogni epoca.
Soluzione
Grazie per i tuoi commenti!
single
Chieda ad AI
Chieda ad AI
Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione
Awesome!
Completion rate improved to 4
Sfida: Addestramento del Percettrone
Scorri per mostrare il menu
Prima di procedere con l'addestramento del percettrone, è importante ricordare che utilizza la funzione di perdita entropia incrociata binaria discussa in precedenza. L'ultimo concetto chiave prima di implementare la retropropagazione è la formula per la derivata di questa funzione di perdita rispetto alle attivazioni di output, an. Di seguito sono riportate le formule per la funzione di perdita e la sua derivata:
Ldan=−(ylog(y^)+(1−y)log(1−y^))=y^(1−y^)y^−ydove an=y^
Per verificare che il percettrone si stia addestrando correttamente, il metodo fit()
stampa anche la perdita media a ogni epoca. Questa viene calcolata facendo la media della perdita su tutti gli esempi di addestramento in quell'epoca:
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))Infine, le formule per il calcolo dei gradienti sono le seguenti:
dzldWldbldal−1=dal⊙f′l(zl)=dzl⋅(al−1)T=dzl=(Wl)T⋅dzlI dati di addestramento di esempio (X_train
) insieme alle etichette corrispondenti (y_train
) sono memorizzati come array NumPy nel file utils.py
. Inoltre, le istanze delle funzioni di attivazione sono anch'esse definite lì:
relu = ReLU()
sigmoid = Sigmoid()
Swipe to start coding
- Calcolare i seguenti gradienti:
dz
,d_weights
,d_biases
eda_prev
nel metodobackward()
della classeLayer
. - Calcolare l'
output
del modello nel metodofit()
della classePerceptron
. - Calcolare
da
(dan) prima del ciclo, che rappresenta il gradiente della funzione di perdita rispetto alle attivazioni di output. - Calcolare
da
ed eseguire la retropropagazione nel ciclo chiamando il metodo appropriato per ciascuno degli strati.
Se l'addestramento è stato implementato correttamente, dato il learning rate di 0.01
, la perdita dovrebbe diminuire costantemente a ogni epoca.
Soluzione
Grazie per i tuoi commenti!
single