Eu estava examinando os documentos de convolução do keras e encontrei dois tipos de convulsão Conv1D e Conv2D. Eu fiz algumas pesquisas na web e é isso que eu entendo sobre Conv1D e Conv2D; Conv1D é usado para seqüências e Conv2D usa para imagens.
Eu sempre pensei que as redes neruais de convolução eram usadas apenas para imagens e visualizavam a CNN dessa maneira
Uma imagem é considerada como uma matriz grande e, em seguida, um filtro desliza sobre essa matriz e calcula o produto escalar. Acredito nisso o que keras menciona como um Conv2D. Se o Conv2D funciona dessa maneira, qual é o mecanismo do Conv1D e como podemos imaginar seu mecanismo?
Respostas:
Convolução é uma operação matemática em que você "resume" um tensor, uma matriz ou um vetor em um menor. Se sua matriz de entrada é unidimensional, você resume em dimensões, e se um tensor possui n dimensões, você pode resumir em todas as n dimensões. Conv1D e Conv2D resumem (convoluem) ao longo de uma ou duas dimensões.
fonte
Essa convolução em 1d economiza custos, funciona da mesma maneira, mas assume uma matriz de 1 dimensão que faz uma multiplicação com os elementos. Se você deseja visualizar, pense em uma matriz de linha ou coluna, ou seja, uma única dimensão, quando multiplicamos, obtemos uma matriz da mesma forma, mas com valores mais baixos ou mais altos, ajudando a maximizar ou minimizar a intensidade dos valores.
Essa imagem pode ajudá-lo,
Para obter detalhes, consulte https://www.youtube.com/watch?v=qVP574skyuM
fonte
Eu vou usar uma perspectiva de Pytorch, no entanto, a lógica permanece a mesma.
Ao usar Conv1d (), devemos ter em mente que provavelmente trabalharemos com entradas bidimensionais, como seqüências de DNA com codificação de um hot-hot ou imagens em preto e branco.
A única diferença entre os Conv2d () e Conv1d () mais convencionais é que este último usa um núcleo unidimensional, como mostra a figura abaixo.
Aqui, a altura dos dados de entrada se torna a "profundidade" (ou in_channels), e nossas linhas se tornam o tamanho do kernel. Por exemplo,
Podemos ver que o kernel se estende automaticamente até a altura da imagem (assim como em Conv2d () a profundidade do kernel se estende automaticamente pelos canais da imagem) e, portanto, tudo o que resta é o tamanho do kernel em relação ao período de as linhas.
Só precisamos lembrar que, se estamos assumindo uma entrada bidimensional, nossos filtros se tornam nossas colunas e nossas linhas se tornam o tamanho do kernel.
fonte