La differenza di Keras tra val_loss e perdita durante l'allenamento


18

Qual'è la differenza tra val_losse lossdurante l'allenamento in Keras?

Per esempio

Epoch 1/20
1000/1000 [==============================] - 1s - loss: 0.1760, val_loss: 0.2032  

In alcuni siti ho letto che durante la convalida, il dropout non funzionava.


Quello che leggi sull'abbandono è probabilmente che, quando viene usato (cioè dropoutnon lo è None), l'allontanamento viene applicato solo durante l'allenamento (cioè nessun abbandono applicato durante la convalida). Pertanto, una delle differenze tra la perdita di convalida ( val_loss) e la perdita di allenamento ( loss) è che, quando si utilizza il dropout, la perdita di validazione può essere inferiore alla perdita di training (di solito non prevista nei casi in cui il dropout non viene utilizzato).
Psi,

Risposte:


15

val_lossè il valore della funzione di costo per i dati di convalida incrociata e la perdita è il valore della funzione di costo per i dati di formazione. Sui dati di validazione, i neuroni che usano drop out non rilasciano neuroni casuali. Il motivo è che durante l'allenamento usiamo l'abbandono per aggiungere un po 'di rumore per evitare un eccesso di adattamento. Durante il calcolo della convalida incrociata, ci troviamo nella fase di richiamo e non nella fase di addestramento. Utilizziamo tutte le funzionalità della rete.

Grazie a uno dei nostri cari amici, cito e spiego i contenuti di qui utili.

validation_split: Float tra 0 e 1. La frazione dei dati di allenamento da utilizzare come dati di validazione. Il modello separerà questa frazione dei dati di addestramento, non si allenerà su di esso e valuterà la perdita e le eventuali metriche del modello su questi dati alla fine di ogni epoca. I dati di validazione è scelto tra gli ultimi campioni nei x ed y dati forniti, prima di rimescolamento.

validation_data: tupla (x_val, y_val) o tuple (x_val, y_val, val_sample_weights) su cui valutare la perdita e le eventuali metriche del modello alla fine di ogni epoca. Il modello non verrà addestrato su questi dati. Questo sostituirà validation_split.

Come potete vedere

fit(self, x=None, y=None, batch_size=None, epochs=1, verbose=1, callbacks=None, validation_split=0.0, validation_data=None, shuffle=True, class_weight=None, sample_weight=None, initial_epoch=0, steps_per_epoch=None, validation_steps=None)

fitIl metodo utilizzato Kerasha un parametro chiamato validation_split, che specifica la percentuale di dati utilizzati per valutare il modello che viene creato dopo ogni epoca. Dopo aver valutato il modello utilizzando questa quantità di dati, questo verrà segnalato val_lossse hai impostato verbose su 1; inoltre, come chiaramente specificato nella documentazione, è possibile utilizzare validation_datao validation_split. I dati di convalida incrociata vengono utilizzati per verificare se il modello si adatta in modo eccessivo ai dati o meno. Questo è ciò che possiamo capire se il nostro modello ha o meno capacità di generalizzazione.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.