Aula 25 - Tensor Flow - Keras - Conjunto de dados CIFAR-10 - VGG 2
Meu github:
Documentação oficial do TensorFlow:
Quer aprender python3 de graça e com certificado? Acesse então:
Se gostarem do conteúdo dêem um joinha 👍 na página do Código Fluente no
Facebook
Aproveito para deixar meus link de afiliados:
Toti:
Backing track / Play-along:
Código Fluente
Putz!
Fiquem a vontade para me adicionar ao linkedin.
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:
Por essa aula é só.
Meu github:
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:
Obrigado, até a próxima e bons estudos. ;)