Come viene applicato il dropout all'output del livello di incorporamento?
model = tf.keras.Sequential([
tf.keras.layers.Embedding(1000, 16, input_length=20),
tf.keras.layers.Dropout(0.2), # <- How does the dropout work?
tf.keras.layers.Conv1D(64, 5, activation='relu'),
tf.keras.layers.MaxPooling1D(pool_size=4),
tf.keras.layers.LSTM(64),
tf.keras.layers.Dense(1, activation='sigmoid')
])
Posso capire quando viene applicato il dropout tra Dense layers
, che cade in modo casuale e impedisce ai neuroni del livello precedente di aggiornare i parametri. Non capisco come funziona il dropout dopo un livello di incorporamento.
Diciamo che la forma di output del livello di incorporamento è (batch_size,20,16)
o semplicemente (20,16)
se ignoriamo la dimensione del batch. Come viene applicato il dropout all'output del livello di incorporamento?
Eliminare casualmente righe o colonne?
Risposte
Non rilascia righe o colonne, agisce direttamente sugli scalari. La documentazione di Dropout Layer keras lo spiega e lo illustra con un esempio:
Il livello Dropout imposta in modo casuale le unità di input su 0 con una frequenza di frequenza
Dopo uno strato denso, gli input di Dropout sono direttamente gli output dei neuroni dello strato denso, come hai detto. Dopo il livello di incorporamento, nel tuo caso, dovresti avere rate * (16 * input_length) = 0.2 * 20 * 16 = 64
gli input impostati su 0 dei 320 input scalari. Questi 64 input rilasciati vengono selezionati casualmente nella griglia 20x16. Si noti che Dropout ridimensiona gli input non eliminati moltiplicandoli per un fattore$\frac{1}{1-rate}$.