En el reciente artículo de WaveNet , los autores se refieren a su modelo como capas apiladas de convoluciones dilatadas. También producen los siguientes cuadros, que explican la diferencia entre convoluciones "regulares" y convoluciones dilatadas.
Las convoluciones regulares se ven así. Esta es una convolución con un tamaño de filtro de 2 y un paso de 1, repetido para 4 capas.
Luego muestran una arquitectura utilizada por su modelo, a la que se refieren como convoluciones dilatadas. Se parece a esto. Dicen que cada capa tiene dilataciones crecientes de (1, 2, 4, 8). Pero para mí esto parece una convolución regular con un tamaño de filtro de 2 y un paso de 2, repetido para 4 capas.
Según tengo entendido, una convolución dilatada, con un tamaño de filtro de 2, zancada de 1 y dilataciones crecientes de (1, 2, 4, 8), se vería así.
En el diagrama WaveNet, ninguno de los filtros salta una entrada disponible. No hay agujeros En mi diagrama, cada filtro omite (d - 1) las entradas disponibles. Así es como se supone que funciona la dilatación, ¿no?
Entonces mi pregunta es, ¿cuál (si alguna) de las siguientes proposiciones son correctas?
- No entiendo las convoluciones dilatadas y / o regulares.
- Deepmind en realidad no implementó una convolución dilatada, sino más bien una convolución zancada, pero usó mal la palabra dilatación.
- Deepmind implementó una convolución dilatada, pero no implementó la tabla correctamente.
No soy lo suficientemente fluido en el código de TensorFlow para entender exactamente qué está haciendo su código, pero publiqué una pregunta relacionada en Stack Exchange , que contiene el bit de código que podría responder a esta pregunta.
fuente
Respuestas:
Del documento de wavenet:
Las animaciones muestran una zancada fija y un factor de dilatación que aumenta en cada capa.
fuente
El centavo solo cayó en este para mí. De esas 3 proposiciones, la correcta es 4: no entendí el documento de WaveNet.
Mi problema era que estaba interpretando que el diagrama de WaveNet cubría una sola muestra, para ejecutarse en diferentes muestras dispuestas en una estructura 2D, siendo 1 dimensión el tamaño de la muestra y la otra el recuento de lotes.
Sin embargo, WaveNet solo está ejecutando todo ese filtro en una serie de tiempo 1D con un paso de 1. Esto obviamente tiene una huella de memoria mucho menor pero logra lo mismo.
Si intentas hacer el mismo truco usando una estructura estriada, la dimensión de salida sería incorrecta.
Para resumir, hacerlo de manera progresiva con una muestra en 2D x estructura por lotes proporciona el mismo modelo, pero con un uso de memoria mucho mayor.
fuente