Deep Learning With Python: Ch. 7

Advanced deep-learning best practices



Tópicos


Callbacks

1. No Python, toda função é um objeto de primeira ordem

2. Fluxo de um programa

3. Implementação de um callback

Programação Orientada a Objetos

Classes: Visão Geral

Estrutura de dados que associa um conjunto de funções a um estado.

Exemplo: Definindo e criando instâncias de classes

Classes: Herança

Uma forma de incorporar métodos e atributos de uma classe para outras classes. Garante a padronização do código.

Exemplo: Herança

API de Callbacks do Keras

Quando se trabalha com um grande conjunto de dados e uma rede neural complexa treinando por um número alto de épocas, esperar o término da execução dos métodos compile e fit (principalmente) torna-se improdutivo, pelo alto investimento de tempo.

Os callbacks ajudam a ter maior controle sobre o fluxo do programa.

Aplicação 1 - Fitsbook

Link do site

Treinamento de exemplo: identificar digitos do MNIST

Eventos

Implementações

Aplicação 2 - Concrete Dropout

Deep-learning best practices

1. Batch Normalization

Normalizar seus dados de entrada para um intervalo e centrar os dados em zero.

2. Depthwise separable convolution

Se as localizações da imagem estão correlacionadas, mas os canais puderem ser interpretados idependentemente, faz sentido separar as camadas de convolução por canal e juntá-las depois.

image.png

3. Hyperparameter Optimization

Quando se desenvolve uma projeta uma rede neural, muitas decisões arbitrárias são tomadas. Quantas camadas empilhar? Quantas unidades ou filtros devem ir em cada camada? Devo usar relu ou outra função de ativação? Quanto dropout devo usar?

Na prática, uma boa intuição de otimização de hiperparâmetros é construída através de várias experiências no decorrer do tempo. As decisões iniciais serão sempre subotimizadas até que se desenvolva uma boa intuição de como ajustar os hiperparâmetros.

As ferramentas abaixo otimizam os hiperparâmetros automaticamente

4. Model Ensembling

Compor a predição final usando predições parciais de vários modelos.

preds_a = model_a.predict(x_val)
preds_b = model_b.predict(x_val)
preds_c = model_c.predict(x_val)
preds_d = model_d.predict(x_val)
final_preds = 0.5 * preds_a + 0.25 * preds_b + 0.1 * preds_c + 0.15 * preds_d