Aula 25 - Tensor Flow - Keras - Conjunto de dados CIFAR-10 - VGG 2

Meu github:

https://github.com/toticavalcanti

Documentação oficial do TensorFlow:

https://www.tensorflow.org/

Quer aprender python3 de graça e com certificado? Acesse então:

https://workover.com.br/python-codigo-fluente

Se gostarem do conteúdo dêem um joinha 👍 na página do Código Fluente no Facebook

https://digitalinnovation.one/

Aproveito para deixar meus link de afiliados:

Hostinger

Digital Ocean

One.com

Toti:

https://www.youtube.com/channel/UCUEtjLuDpcOvR3mIUr-viOA

Backing track / Play-along:

https://www.youtube.com/channel/UCT3TryVMqTqYBjf5g5WAHfA

Código Fluente

https://www.youtube.com/channel/UCgn-O-88XBAwdG9gUWkkb0w

Putz!

https://www.youtube.com/channel/UCZXop2-CECwyFYmHbhnAkAw

Fiquem a vontade para me adicionar ao linkedin.

Notebook da aula

Aula 25 - Tensor Flow - Keras - Conjunto de dados CIFAR-10 - VGG 2

CIFAR-10

Nessa aula usaremos a arquitetura VGG 2. Existem outras arquiteturas conhecidas de redes convolucionais:
  • AlexNet - que foi a primeira arquitetura de rede neural convolucional em grande escala que se saiu bem na classificação ImageNet - 2012.
  • ResNet - Um dos problemas que os ResNets resolvem é o famoso gradiente de desaparecimento.
  • Inception
  • DenseNet
  • VGG - explora um aspecto muito importante das CNNs: a profundidade.
Na camada de entrada a VGG obtém uma imagem RGB. As camadas convolucionais na VGG usam um campo receptivo muito pequeno, 3x3, o menor tamanho possível que ainda captura esquerda / direita e cima / baixo.

No primeiro bloco


model.add(Conv2D(32, (3, 3), activation='relu', kernel_initializer='he_uniform', padding='same', input_shape=(32, 32, 3)))
model.add(Conv2D(32, (3, 3), activation='relu', kernel_initializer='he_uniform', padding='same'))

E no segundo bloco


model.add(Conv2D(64, (3, 3), activation='relu', kernel_initializer='he_uniform', padding='same'))
model.add(Conv2D(64, (3, 3), activation='relu', kernel_initializer='he_uniform', padding='same'))
A camada de pooling serve para simplificar a informação da camada anterior.

model.add(MaxPooling2D((2, 2))) 
Assim como na convolução, no pooling, é escolhida uma unidade de área, por exemplo 2x2, para transitar por toda a saída da camada anterior. A unidade de área é responsável por resumir a informação dessa área de 2x2 em um único valor. Se a saída da camada anterior for 24x24, a saída do pooling será 12x12. O método mais utilizado é o maxpooling e é exatamente ele que estamos usando no exemplo.

Fully connected

No final da rede temos uma camada totalmente conectada, onde sua entrada é a saída da camada anterior e sua saída são N neurônios, com N sendo a quantidade de classes que o modelo precisa classificar.

model.add(Dense(128, activation='relu', kernel_initializer='he_uniform'))
model.add(Dense(10, activation=tf.nn.softmax, name='logits'))
A saída da softmax são as probabilidades para a tarefa de classificação, e a sua entrada é a camada logits. A camada logits normalmente produz valores de -infinity a + infinito e a camada softmax os transforma em valores entre 0 e 1.

Agora acesse o notebook:

Notebook da aula

Por essa aula é só.

Meu github:

https://github.com/toticavalcanti

Se gostarem do conteúdo dêem um joinha 👍 na página do Código Fluente no Facebook

Link do código fluente no Pinterest

Novamente deixo meus link de afiliados:

Hostinger

Digital Ocean

One.com

Obrigado, até a próxima e bons estudos. ;)