Aula 15 – Tensor Flow – Redes Neurais – Regressão Linear com Estimator API

Aula 15 – Tensor Flow – Redes Neurais – Regressão Linear com Estimator API

Voltar para página principal do blog

Todas as aulas desse curso

Aula 14                      Aula 16

Meu github:

https://github.com/toticavalcanti

Documentação oficial do TensorFlow:

https://www.tensorflow.org/

Link para o notebook da aula:

notebook-da-aula

Python com Tensorflow

Python com Tensorflow

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

https://digitalinnovation.one/

Link do código fluente no Pinterest

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.

Aula 15 – Tensor Flow – Redes Neurais – Regressão Linear com Estimator API

Existem alguns tipos de estimadores:

  • tf.estimator.LinearClassifier – classificador linear clássico, constrói um modelo de classificação linear
  • tf.estimator.LinearRegressor – constrói um modelo de regressão linear
  • tf.estimator.DNNClassifier – constrói um modelo de classificador usando uma rede neural densamente conectada
  • tf.estimator.DNNRegressor – constrói um modelo de regressão usando uma rede neural densamente conectada
  • tf.estimator.DNNLinearCombinedClassifier – constrói uma rede neural e um modelo de classificação linear combinado
  • tf.estimator.DNNLinearCombinedClassifier – constrói uma rede neural e um modelo de regressão linear combinado
  • entre outros

O formato para usar essa API de estimador é o seguinte:

  • Definir uma lista de variáveis independentes, ou seja, as características dos dados, enfim, as features.
  • Criar o modelo estimador
  • Criar a função de entrada de dados
  • Chamar os métodos train, evaluate e predict no objeto estimador

TF Estimator

Vamos criar um estimador bem simples, teremos apenas uma feature.


import tensorflow.compat.v1 as tf
tf.disable_v2_behavior()
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
#gerando os dados lineares
x_data = np.linspace(0.0, 10.0, 1000000)
#cria o ruído para adicionar aos dados, e ficarem parecidos com dados mais reais
noise = np.random.randn(len(x_data))
#Adicionamos o ruído aos dados
y_true = (0.5 * x_data) + 5 + noise
#Cria os dataframes pandas com os dados
x_df = pd.DataFrame(data = x_data, columns = ['X Data'])
y_df = pd.DataFrame(data = y_true, columns = ['Y'])
#concatena em um mesmo dataframe os dois dataframes anteriores
my_data = pd.concat([x_df, y_df], axis = 1)
#teremos uma feature só, e é numérica
feat_cols = [tf.feature_column.numeric_column('x', shape=[1])]
#cria o estimador
estimator = tf.estimator.LinearRegressor(feature_columns = feat_cols)
#importa o train_test_split
from sklearn.model_selection import train_test_split
#separa 30% da base para teste e 70% para treinar a rede
x_train, x_eval, y_train, y_eval = train_test_split(x_data, y_true, test_size = 0.3, random_state = 101)
 
# é preciso ter uma função de entrada(feed e indicador de tamanho de lote)
input_func = tf.estimator.inputs.numpy_input_fn({'x': x_train }, y_train, batch_size = 8, num_epochs = None, shuffle = True)

# Função de entrada dos dados de treinamento
# a razão do shuffle false, é que vamos usar essa função de entrada para avaliar em relação 
# a uma função de entrada de teste.
# função de entrada dos dados de treinamento
train_input_func = tf.estimator.inputs.numpy_input_fn({'x': x_train }, y_train, batch_size = 8, num_epochs = 1000, shuffle = False)
# função de entrada dos dados de teste
eval_input_func = tf.estimator.inputs.numpy_input_fn({'x': x_eval }, y_eval, batch_size = 8, num_epochs = 1000, shuffle = False)
# treina o estimador.
estimator.train(input_fn = input_func, steps = 1000)
# obtém algumas métricas de avaliação
train_metrics = estimator.evaluate(input_fn = train_input_func, steps = 1000)
# avalia a métrica
eval_metrics = estimator.evaluate(input_fn = eval_input_func, steps = 1000)

print('MÉTRICAS DE DADOS DE TREINAMENTO')
print(train_metrics)

print('AVALIAÇÃO DAS MÉTRICAS')
print(eval_metrics)

# gerando dados novos para testar o modelo
brand_new_data = np.linspace(0, 10, 10)

input_fn_predict = tf.estimator.inputs.numpy_input_fn({'x': brand_new_data}, shuffle = False)

list(estimator.predict(input_fn = input_fn_predict))

predictions = []

for pred in estimator.predict(input_fn = input_fn_predict):
  predictions.append(pred['predictions'])

print(predictions)

my_data.sample(n = 250).plot(kind = 'scatter', x = 'X Data', y = 'Y')

my_data.sample(n = 250).plot(kind = 'scatter', x = 'X Data', y = 'Y')
plt.plot(brand_new_data, predictions, 'r*')

Por essa aula é só, nos vemos na próxima, \o/ e até lá.

Link para o notebook da aula:

notebook-da-aula

Voltar para página principal do blog

Todas as aulas desse curso

Aula 14                      Aula 16

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. 😉

About The Author
-

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>