Come impostare batch_size, steps_per epoch e fasi di validazione


26

Sto iniziando a imparare le CNN usando Keras. Sto usando il backend theano.

Non capisco come impostare i valori su:

  • dimensione del lotto,
  • passi per epoca,
  • validation_steps.

Quale dovrebbe essere il valore impostato su batch_size, i passaggi per epoca e i passaggi di convalida se ho 240.000 campioni nel set di addestramento e 80.000 nel set di test?


Quali sono le tue specifiche hardware? Dipende da che generalmente le persone usano una dimensione del lotto di 32/64, epoche come 10 ~ 15 e quindi è possibile calcolare i passaggi per epoca da quanto sopra ..
Aditya

Risposte:


28
  • batch_size determina il numero di campioni in ciascun mini batch. Il suo massimo è il numero di tutti i campioni, il che rende accurata la discesa del gradiente, la perdita diminuirà verso il minimo se il tasso di apprendimento è abbastanza piccolo, ma le iterazioni sono più lente. Il suo minimo è 1, con conseguente discesa gradiente stocastica: veloce ma la direzione del gradiente gradiente si basa solo su un esempio, la perdita potrebbe saltare. batch_size consente di regolare tra i due estremi: direzione del gradiente accurata e iterazione rapida. Inoltre, il valore massimo per batch_size potrebbe essere limitato se il set di dati modello + non si adatta alla memoria disponibile (GPU).
  • steps_per_epoch il numero di iterazioni batch prima che un'epoca di allenamento sia considerata terminata. Se si dispone di un set di allenamento di dimensioni fisse, è possibile ignorarlo, ma può essere utile se si dispone di un set di dati enorme o se si stanno generando aumenti di dati casuali al volo, ovvero se il set di allenamento ha una dimensione infinita (generata). Se hai tempo di esaminare l'intero set di dati di allenamento, ti consiglio di saltare questo parametro.
  • validation_steps simile a steps_per_epoch ma sul set di dati di validazione invece sui dati di training. Se si ha il tempo di esaminare l'intero set di dati di convalida, si consiglia di saltare questo parametro.

Cosa intendi con "saltare questo parametro"? Quando rimuovo il parametro che ottengo When using data tensors as input to a model, you should specify the steps_per_epoch argument.
Nicolas Raoul,

Secondo la documentazione, il parametro steps_per_epoch del metodo fit ha un valore predefinito e pertanto dovrebbe essere facoltativo: "il valore predefinito None è uguale al numero di campioni nel set di dati diviso per la dimensione del batch o 1 se ciò non può essere determinato." Fonte: keras.io/models/model
Silpion,

1

c'è una risposta in Github

  1. model.fit_generator richiede che il generatore di set di dati di input funzioni all'infinito.
  2. steps_per_epochviene utilizzato per generare l'intero set di dati una volta chiamando i steps_per_epochtempi del generatore
  3. mentre epochsindica il numero di volte in cui il modello viene addestrato sull'intero set di dati.
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.