TensorFlow — Redes Neurais por Brasileiros

Adilmar Coelho Dantas
4 min readApr 1, 2019

Salve pessoal ! Hoje vamos continuar nossos aprendizados com o Tensorflow (TF), nesse artigo iremos criar uma rede neural usando o TF para resolver um problema clássico de aprendizagem de maquina, o problema de ir ou não jogar tênis tomando como base informações como: temperatura, umidade e vento.

Introdução — Redes Neurais (ANN)

Redes neurais artificiais ( ANN ) ou sistemas conexionistas são sistemas de computação inspirados pelas redes neurais biológicas. A rede neural em si não é um algoritmo, mas sim uma estrutura com muitos algoritmos de aprendizado de máquina diferentes com a finalidade de trabalharem juntos para processar entradas de dados complexas. Esses sistemas tem a capacidade de “aprender” a executar tarefas a partir de exemplos, geralmente sem serem programados com regras específicas. Por exemplo, no reconhecimento de imagem , elas podem aprender a identificar imagens que contenham gatos analisando imagens de exemplo que foram rotuladas manualmente como “gato” ou “cachorro” e usando os resultados para identificar gatos em outras imagens. Eles fazem isso sem qualquer conhecimento prévio sobre gatos, por exemplo, que eles têm peles, rabos, bigodes e faces de gato. Em vez disso, eles geram automaticamente características de identificação do material de aprendizagem que processam. Para o nosso problema utilizaremos um outro tipo de rede neural as Feedforward Neural Network a qual vamos explicar melhor a seguir.

Feedforward Neural Network

Rede neural Feedforward.

Diferente das redes neurais recorrentes (ANN), as redes neurais feedforward são um tipo de redes neurais em que as conexões entre os nós não formam um ciclo, como demonstrado na figura. Nesse tipo de rede, a informação move-se em apenas uma direção, para frente, dos nós de entrada, através dos nós ocultos (se houver) e para os nós de saída. Não há ciclos ou loops na rede.

Definição do problema

Vamos supor que para ir jogar tênis como os amigos tomamos como base informações do clima.

Base inicial para resolução do problema de ir ou não jogar tênis.

Nesse conjunto de dados temos os registros de outlook, humidity, wind e play descrevendo se nessas condições ele jogou ou não tênis. Nosso objetivo e desenvolver uma rede que dado num novo conjunto de parâmetros (outlook, humidity, wind) seja capaz de predizer se iremos ou não jogar tênis.

Pré requisitos

Antes de inciar a construção do algoritmo você deve certificar que em seu computador está instalado os seguintes recursos:

Como instalar cada um deles você encontra no post anterior de maneira detalhada.

Construção da estrutura da rede

O primeiro passo a ser realizado é importar as seguintes bibliotecas.

import tensorflow as tf 
from tensorflow import keras
import os
import pandas
import numpy as np

Arquitetura da rede e função de treinamento

Com as bibliotecas devidamente importadas o próximo passo é a definição da rede (parâmetros de entrada, saída, interações, épocas, etc). Logo em seguida deveremos criar uma função de treinamento para essa rede para que então seja possível passar uma nova informação para a realização da predição do conhecimento.

Agora vamos entender o código passo a passo, o primeiro passo a se fazer é definir o modelo da rede, as camadas de entrada, saída, é o método de treinamento, veja.

Agora que temos nossa arquitetura bem definidas, devemos passar para a rede as entradas e saídas para treinamento da rede neural. O arquivo csv devidamente preparado pode ser baixado aqui. play_tenis.csv

Com a base em mãos, podemos criar um script que lê cada uma das linhas e colunas do documento e cria nossos vetores de entrada e saída de dados para o treinamento veja.

No final do processamento teremos como resultado dois Array’s X (dados de entrada ) e Y (dados de saída), com essas informações podemos criar a estrutura de treinamento e inicializar o processamento.

Linha 1: Na função de treinamento model.fit() devemos passar como parâmetro as entradas (X), saídas (Y), o numero de épocas (número de vezes que as interações serão repetidas e por ultimo o numero de interações ou passos de cada época, para esse problema estamos usando 8000 (épocas) x 10 (interações).

Linha 4: Logo em seguida optamos por salvar nosso modelo de treinamento usando a função model.save(), evitando assim um novo treinamento a cada nova predição.

Linha 9: Por fim realizamos uma predição para avaliar o modelo treinado e imprimimos o resultado da predição.

Função para predição

Para facilitar a nossa predição iremo criar uma função com essa funcionalidade, como principal característica iremos carregar o modelo salvo anteriormente na função de treinamento veja.

Bom é isso pessoal, espero que essa postagem tenha esclarecido alguns conceitos na mente de vocês e que você se sinta mais preparado para entrar nesse universo sem fim ….

ohayo!

--

--

Adilmar Coelho Dantas

PhD in Computer Science, Msc in Computer Science (Artificial Intelligence) — Universidade Federal de Uberlândia