Saltar al contenido

¿Cómo entender SpatialDropout1D y cuándo usarlo?

este problema se puede abordar de variadas maneras, pero nosotros te mostramos la que para nosotros es la respuesta más completa.

Solución:

Para simplificar, primero señalaría que los llamados mapas de características (1D, 2D, etc.) son nuestros canales regulares. Veamos ejemplos:

  1. Dropout(): Definamos entrada 2D: [[1, 1, 1], [2, 2, 2]]. El abandono considerará cada elemento de forma independiente y puede resultar en algo como [[1, 0, 1], [0, 2, 2]]

  2. SpatialDropout1D(): En este caso, el resultado se verá como [[1, 0, 1], [2, 0, 2]]. Observe que el segundo elemento se puso a cero a lo largo todo canales

La forma del ruido

En orden para entender SpatialDropout1Dusted debe acostumbrarse a la noción de la forma de ruido. En el abandono de vainilla simple, cada elemento se mantiene o elimina de forma independiente. Por ejemplo, si el tensor es [2, 2, 2], cada uno de los 8 elementos se puede poner a cero dependiendo del lanzamiento aleatorio de la moneda (con cierta probabilidad de “cara”); en total, habrá 8 lanzamientos de monedas independientes y cualquier número de valores puede convertirse en cero, desde 0 a 8.

A veces es necesario hacer más que eso. Por ejemplo, uno puede necesitar dejar caer el rebanada entera a lo largo de 0 eje. El noise_shape en este caso es [1, 2, 2] y el abandono involucra solo 4 lanzamientos de monedas aleatorios e independientes. El primer componente se mantendrá junto o se dejará caer junto. El número de elementos puestos a cero puede ser 0, 2, 4, 6 o 8. No puede ser 1 o 5.

Otra forma de ver esto es imaginar que el tensor de entrada es de hecho [2, 2], pero cada valor es de precisión doble (o de precisión múltiple). En lugar de descartar los bytes en el medio, la capa elimina el valor completo de varios bytes.

¿Por qué es útil?

El ejemplo anterior es solo ilustrativo y no es común en aplicaciones reales. Un ejemplo más realista es este: shape(x) = [k, l, m, n] y noise_shape = [k, 1, 1, n]. En este caso, cada componente de lote y canal se mantendrá de forma independiente, pero cada fila y columna se mantendrán o no juntas. En otras palabras, el entero[l, m]mapa de características se mantendrá o se abandonará.

Es posible que desee hacer esto para tener en cuenta la correlación de píxeles adyacentes, especialmente en las primeras capas convolucionales. Efectivamente, desea evitar la coadaptación de píxeles con sus vecinos en los mapas de características y hacer que aprendan como si no existieran otros mapas de características. Esto es exactamente lo que SpatialDropout2D está haciendo: promueve la independencia entre los mapas de características.

El SpatialDropout1D es muy similar: dado shape(x) = [k, l, m] usa noise_shape = [k, 1, m] y suelta mapas completos de características 1-D.

Referencia: Localización eficiente de objetos mediante redes convolucionales por Jonathan Tompson en otros.

Nos encantaría que puedieras comunicar este enunciado si te fue de ayuda.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *