No recente artigo da WaveNet , os autores se referem ao seu modelo como tendo camadas empilhadas de convoluções dilatadas. Eles também produzem os gráficos a seguir, explicando a diferença entre convoluções 'regulares' e convoluções dilatadas.
As convoluções regulares se parecem com Esta é uma convolução com um tamanho de filtro 2 e uma passada de 1, repetida por 4 camadas.
Eles então mostram uma arquitetura usada por seu modelo, à qual se referem como convoluções dilatadas. Se parece com isso. Eles dizem que cada camada tem dilatações crescentes de (1, 2, 4, 8). Mas para mim isso parece uma convolução regular com um tamanho de filtro 2 e um passo de 2, repetido por 4 camadas.
Pelo que entendi, uma convolução dilatada, com um tamanho de filtro de 2, passo de 1 e dilatações crescentes de (1, 2, 4, 8), seria assim.
No diagrama WaveNet, nenhum dos filtros pula uma entrada disponível. Não há buracos. No meu diagrama, cada filtro pula (d - 1) as entradas disponíveis. É assim que a dilatação deve funcionar, não?
Então, minha pergunta é: quais (se houver) das seguintes proposições estão corretas?
- Eu não entendo convoluções dilatadas e / ou regulares.
- Deepmind, na verdade, não implementou uma convolução dilatada, mas sim uma convolução acelerada, mas usou mal a palavra dilatação.
- Deepmind implementou uma convolução dilatada, mas não implementou o gráfico corretamente.
Não sou fluente o suficiente no código TensorFlow para entender exatamente o que o código está fazendo, mas postei uma pergunta relacionada no Stack Exchange , que contém o pouco de código que poderia responder a essa pergunta.
fonte
Respostas:
Do papel de wavenet:
As animações mostram um passo fixo e o fator de dilatação aumentando em cada camada.
fonte
O centavo caiu sobre este aqui para mim. Dessas 3 proposições, a correta é 4: eu não entendi o documento WaveNet.
Meu problema era que eu estava interpretando o diagrama WaveNet como cobrindo uma única amostra, para ser executado em diferentes amostras dispostas em uma estrutura 2D, com 1 dimensão sendo o tamanho da amostra e a outra sendo a contagem de lotes.
No entanto, o WaveNet está executando esse filtro inteiro em uma série temporal 1D com um passo de 1. Isso obviamente tem uma pegada de memória muito menor, mas realiza a mesma coisa.
Se você tentasse fazer o mesmo truque usando uma estrutura estriada, a dimensão da saída estaria errada.
Então, para resumir, fazê-lo da maneira simplificada com uma estrutura 2D de amostra x lote fornece o mesmo modelo, mas com um uso de memória muito maior.
fonte