Redes Neurais Convolucionais – Não Apenas Introdução [Parte 2]

Aprenda a criar seu próprio Deep ConvNet. Aqui vou explicar cada termo e conceito de uma arquitetura ConvNet típica.

Aniket Maurya Blocked Unblock Seguir Seguindo 16 de dezembro de 2018

Olá Mundo! No artigo anterior , introduzi uma visão abstrata do ConvNets. Neste artigo, vou mergulhar em detalhes do ConvNets.

Fonte: http://cs231n.github.io/convolutional-networks

Um ConvNet é composto de camadas. Cada camada tem uma API simples: transforma um volume 3D de entrada em um volume 3D de saída com alguma função diferenciável que pode ou não ter parâmetros.

Blocos de construção do ConvNet

Camada Convolucional

A camada Conv é o bloco de construção principal da CNN. Todos os cálculos pesados são realizados nesta camada. Nesta camada, os filtros (também chamados de kernels ) são convolutos para a matriz de entrada. Vamos visualizar esse conceito com um exemplo simples.

http://cs231n.github.io/assets/cnn/depthcol.jpeg

Considere um volume de entrada com tamanho [32 x 32 x 3], (imagem RGB). Se o tamanho do filtro for 5×5, cada neurônio na camada Conv terá pesos para uma região [5x5x3] no volume de entrada, para um total de 5 x 5 x 3 = 75 pesos (e um parâmetro de polarização +1). O número de filtros usados aqui determinará a profundidade da camada de saída.

Hyperparameters da camada Conv – Profundidade, Stride, Padding.

O número de filtros usados é chamado de profundidade da camada Conv. Ele determina a profundidade do volume de saída.

Trending AI Articles:

1. Minha solução para alcançar o top 1% em um novo Concurso de PNL em Ciência de Dados

2. Aplicação do Aprendizado Profundo no Desenvolvimento Web Front-end (HTML + CSS)

3. Investigando Perda de Dados e Focais para o Kaggle 2018 Data Science Bowl

4. Repro papel: “Redes Neurais Auto-Normalizantes”

Até agora usamos um passo de 1 passo, ou seja, movemos os filtros 1 pixel de cada vez. Stride é o passo que damos para multiplicar com um filtro. Quando a passada é 2, o filtro salta 2 pixels de cada vez quando os deslizamos.

Às vezes, é conveniente preencher o volume de entrada com zeros ao redor da borda. O tamanho deste preenchimento zero é um hiperparâmetro. O preenchimento nos permite controlar o tamanho espacial dos volumes de saída. Usamos principalmente para preservar exatamente o tamanho espacial do volume de entrada, de modo que a largura e a altura de entrada e saída sejam as mesmas.

Seja ' p ' a quantidade de preenchimento, então a matriz resultante será de tamanho [n + 2p-f + 1] . Onde 'n' é o volume de entrada e 'f' é o tamanho do filtro.

Com passos de tamanho 's', o tamanho do volume de saída será [(n + 2p – f) / s + 1] .

Camada de agrupamento

É usado para reduzir o número de parâmetros e computação na rede. O pool máximo é mais comumente usado. Como o nome sugere, o elemento máximo é filtrado no novo volume. O pool médio é também outro tipo de pooling.

Fonte: http://cs231n.github.io/assets/cnn/maxpool.jpeg

Um conjunto máximo de tamanho [ 2×2 ] é aplicado a um volume de tamanho [ 4×4 ] que resulta em um volume de [ 2×2 ]. Em geral, um volume é reduzido para [(nf) / s + 1] . Onde os símbolos têm seu significado usual.

Camada totalmente conectada

Uma camada totalmente conectada é apenas outra camada de rede neural. Eles estão totalmente conectados a todas as ativações nas camadas anteriores.

Resumindo

Até agora, vimos que os ConvNets são compostos de três tipos de camadas: camada Conv, camada Pool e FC (totalmente conectado).

Uma função de ativação é usada para calcular as ativações na camada Conv. Relu é a função de ativação mais usada. Sigmóide e Tanh algumas outras funções de activação vulgarmente utilizados.

Padrão de camada: Conv (Relu) -> POOL -> FC