¿Cómo se aplica la omisión a la salida de la capa incrustada?
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')
])
Puedo entender cuándo se aplica el abandono entre Dense layers
, que cae aleatoriamente y evita que las neuronas de la capa anterior actualicen los parámetros. No entiendo cómo funciona el abandono después de una capa de incrustación.
Digamos que la forma de salida de la capa de incrustación es (batch_size,20,16)
o simplemente (20,16)
si ignoramos el tamaño del lote. ¿Cómo se aplica la omisión a la salida de la capa incrustada?
¿Abandonar filas o columnas al azar?
Respuestas
No elimina filas ni columnas, actúa directamente sobre los escalares. La documentación de keras de Dropout Layer lo explica y lo ilustra con un ejemplo:
La capa Dropout establece aleatoriamente las unidades de entrada en 0 con una frecuencia de tasa
Después de una capa densa, las entradas de abandono son directamente las salidas de las neuronas de la capa densa, como dijiste. Después de su capa de incrustación, en su caso, debe tener rate * (16 * input_length) = 0.2 * 20 * 16 = 64
entradas configuradas en 0 de las 320 entradas escalares. Estas 64 entradas descartadas se seleccionan aleatoriamente en la cuadrícula de 20x16. Tenga en cuenta que Dropout vuelve a escalar las entradas no eliminadas multiplicándolas por un factor$\frac{1}{1-rate}$.