Primeiro Contato com a biblioteca Keras e TensorFlow

O que é essa biblioteca e como você pode utilizá-la para projetos de Deep Learning

Durante as próximas iremos explorar grande parte do material disponível no site oficial do Keras (keras.io). Esse primeiro artigo será o nosso primeiro contato com essa biblioteca que hoje faz parte do TensorFlow e é utilizada para o desenvolvimento de modelos com redes neurais.

Keras: a Origem

Keras (κέρας) significa chifre em Grego. É uma referência da literatura grega antiga, encontrado na obra Odyssey, onde espíritos são divididos entre aqueles que enganam as pessoas com visões falsas do mundo e chegam na terra através de um portal de marfim (Ivory) e aqueles que anunciam um futuro que irá ocorrer de verdade. Estes últimos chegam em um portal de chifres (Horn).

Keras foi inicialmente desenvolvido como parte de um esforço de pesquisa em um projeto chamado ONEIROS (Open-ended Neuro-Electronic Intelligent Robot Operating)

O seu foco era permitir o desenvolvimento rápido de experimentos. Permitindo a implementação de projetos em poucas etapas.

Historicamente, Keras era uma API de alto nível que poderia ser configurada para rodar com outras API de baixo nível como TensorFlow, Theano and CNTK.

Recentemente, contudo, Keras se tornou completamente integrado com a API do TensorFlow. Ou seja, podemos instalar o Keras utilizando a instalação padrão do próprio TensorFlow.

Basta executarmos o comando pip install TensorFlow e já teremos o Keras instalado.


A proposta dos desenvolvedores é que o Keras tenha as seguintes características:

  • Simples— mas não simplista. Keras deve reduzir a carga cognitiva do desenvolvedor de modo a permitir focar nas partes dos problemas que realmente importam.

  • Flexível — Keras adota o princípio da divulgação progressiva da complexidade:s fluxos de trabalhos simples devem ser rápidos e fáceis, enquanto fluxos de trabalho avançados devem ser criadas através de componentes claros e bem definidos (que você já aprendeu).

  • Poderoso — Keras promete entregar performance e escalabilidade a nível industrial. Sendo utilizada por organizaçãoes e empresas como a NASA, Youtube e Waymo.

Primeiro contato com Keras

As estruturas de dados principais do Keras são as camadas(layers) e modelos (models). O modelo mais simples é chamado de Sequencial(Sequential) basicamente é um empilhamento linear de camadas. Para arquiteturas mais complexas você deverá utilizar a chamada API Funcional do Keras (Keras functional API), nessa API você conseguirá desenvolver grafos com as camadas e modelos desde o zero com o chamado subclasssing.

Fique tranquilo, o próximo artigo será especificamente sobre o modelo Sequencial, mas adiantando, você poderá instancia-lo assim:


A variável model conterá todas as camadas que você adicionar com o comando .add():

Com o código acima você estará adicionando duas camadas ao seu modelo sequencial.
A primeira camada será do tipo
Densa e terá 64 neurônios, utilizando a função de ativação relu.
Já a segunda terá
10 neurônios e utilizará a função de ativação softmax.
Uma vez que o modelo está definido, podemos configurar o processo de aprendizagem através do método
.compile():


Com o compile() poderemos definir, entre outros parâmetros, o tipo de loss, o otimizador e as métricas de avaliação. A filosofia do Keras é manter as coisas simples simples, mas você poderá especificar melhor os detalhes utilizando subclassing:

Finalmente, iremos definir como o treinamento ocorrerá e como avaliá-lo.

Com o código abaixo teremos 5 épocas de treino utilizando um batch_size de 32 bits, serão executadas 5 épocas e esperamos que o modelo melhore a cada iteração.

Após o modelo treinado, iremos avaliá-lo utilizando o evaluate() e os dados de teste.

Também podemos gerar a previsão da classe alvo para todo um dataset de teste com o código abaixo:

Como utilizamos a função de ativação softmax, o resultado será em probabilidades para cada classe.

Os códigos que mostramos são apenas para dar uma visão inicial da simplicidade do Keras.

O princípio de avançar progressivamente na complexidade permite que códigos mais complexos sejam desenvolvidos de modo incremental conforme você vai aprendendo.

Sigam por aqui ou no @aprendadatascience para aprender mais sobre o Keras e TensorFlow nas próximas semanas.