SlideShare uma empresa Scribd logo
1
Introdução a Machine Learning e
TensorFlow
Guilherme Campos
2
Agenda
Conceitos
• Machine Learning
• Tipos de aprendizado
• Deep Learning
TensorFlow
• O que é?
• Grafos de execução
• APIs
• Tensorboard
3
Conceitos
4
Machine Learning
Machine
Learning
Inteligência
Artificial
Deep
Learning
5
Exemplo
• Como classificar uma imagem como Maçã ou Laranja?
6
Exemplo
7
Exemplo
8
Exemplo
99
Novo problema? Comece tudo de novo!
10
Machine Learning
11
Machine Learning – Aprendizagem de Máquina
• Aprendizagem Supervisionado
• Aprendizagem Não-supervisionado
• Aprendizagem por Reforço
12
Aprendizagem supervisionada
Caracteristicas Rotulo
1.jpg Maçã
2.jpg Laranja
... ...
Classificador
Buscar um padrão
Conjunto de dados
13
Aprendizagem supervisionada
• Árvores de decisão
• Regressão Linear/Logística
• Support Vector Machines
• Redes Neurais
• K- Vizinhos mais próximos
14
from sklearn import datasets, svm, metrics
import matplotlib.pyplot as plt
# Carrega o dataset
digits = datasets.load_digits()
# transforma a imagem em vetor
n_samples = len(digits.images)
data = digits.images.reshape((n_samples, -1))
x_train = data[:n_samples / 2]
y_train = digits.target[:n_samples / 2]
# cria um classificador SVM
classifier = svm.SVC(gamma=0.001)
# realiza o ajuste dos dados
classifier.fit(x_train, y_train)
esperado = digits.target[n_samples / 2:]
predito = classifier.predict(data[n_samples / 2:])
15
Aprendizagem não supervisionada
Caracteristicas Rotulo
1.jpg ?
2.jpg ?
... ???
Conjunto de dados
Agrupamento
Buscar um padrão
16
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
from sklearn.datasets import make_blobs
n_samples = 1500
random_state = 170
X, y = make_blobs(n_samples=n_samples, random_state=random_state)
y_pred = KMeans(n_clusters=3, random_state=random_state).fit_predict(X)
plt.subplot(211)
plt.scatter(X[:, 0], X[:, 1], c=y_pred)
plt.title("Iniciado com 3 centroides")
y_pred = KMeans(n_clusters=2, random_state=random_state).fit_predict(X)
plt.subplot(212)
plt.scatter(X[:, 0], X[:, 1], c=y_pred)
plt.title("Iniciado com 2 centroides")
plt.show()
17
Aprendizagem por reforço
Estado Ação Recompensa
??? ? ?
??? ? ?
... ??? ???
Conjunto de estados
Realiza uma ação
Estado Ação Recompensa
1 UP 0
??? ? ?
... ??? ???
Conjunto de estados
18
Aprendizagem por reforço
• oi
MarI/O
OpenAI Gym
19
Deep Learning
20
14/09/2014
21
O você vê.
50 68 78 95
...
67 21 23 42
71 59 58 31
47 19 29 39
...
O que o computador “vê”.
pixels
22
import numpy as np
import keras
from keras.preprocessing import image
from keras.applications.inception_v3 import preprocess_input,
decode_predictions
model = keras.applications.InceptionV3(weights='imagenet')
img_path = 'aracari_castanho.jpg'
img = image.load_img(img_path, target_size=(299,299))
x = image.img_to_array(img)
x = np.expand_dims(x, axis=0)
x = preprocess_input(x)
preds = model.predict(x)
# decode
print('Predicted:', decode_predictions(preds, top=3)[0])
Toucan 71,27%
Hornbill 16,84%
School Bus 1,65%
Predicted: [('n01843383', 'toucan', 0.71278381), ('n01829413', 'hornbill', 0.16843531), ('n04146614', 'school_bus', 0.01657751)]
23
import numpy as np
import keras
from keras.preprocessing import image
from keras.applications.inception_v3 import preprocess_input,
decode_predictions
model = keras.applications.InceptionV3(weights='imagenet')
img_path = 'arvore.jpg'
img = image.load_img(img_path, target_size=(299, 299))
x = image.img_to_array(img)
x = np.expand_dims(x, axis=0)
x = preprocess_input(x)
preds = model.predict(x)
# decode
print('Predicted:', decode_predictions(preds, top=3)[0])
Lakeside 21,76%
Church 8,03%
Valley 7,81%
Predicted: [('n09332890', 'lakeside', 0.21762265), ('n03028079', 'church', 0.080397919), ('n09468604', 'valley', 0.078168809)]
24
import numpy as np
import keras
from keras.preprocessing import image
from keras.applications.inception_v3 import preprocess_input,
decode_predictions
model = keras.applications.InceptionV3(weights='imagenet')
img_path = 'alvaro.jpg'
img = image.load_img(img_path, target_size=(299, 299))
x = image.img_to_array(img)
x = np.expand_dims(x, axis=0)
x = preprocess_input(x)
preds = model.predict(x)
# decode
print('Predicted:', decode_predictions(preds, top=3)[0])
Jersey 51,26%
Wig 2,58%
Drumstick 2,12%
Predicted: [('n03595614', 'jersey', 0.51262307), ('n04584207', 'wig', 0.025850503), ('n03250847', 'drumstick', 0.021243958)]
25
O que é deep learning?
• Aprendizagem de representação dos dados.
• Utiliza algoritmos hierárquicos com varias camadas.
• Se alimentado com muitos dados consegue generalizar o problema.
26
Curto histórico
27
28
29
Deep Learning
Mais
Processamento
Mais dados Novos
Modelos
MNIST
YouTube-8M
30
Deep Learning - Aplicações
• Reconhecimento de voz
• Visão computacional
• Processamento de linguagem natural
31
Reconhecimento de voz
32
Visão Computacional
33
Processamento de linguagem natural
34
TensorFlow
35
TensorFlow Playground - http://playground.tensorflow.org/
36
TensorFlow
•Biblioteca de machine Learning Open Source
•Funções especificas para Deep Learning
•O seu uso vai do desenvolvimento a produção
37
TensorFlow
• Portável e escalável
Laptop Datacenters Android iOS Raspberry Pi
38
Um vetor multidimensional
Grafo de operações
39
• Vetor n-dimensional, onde n = [0, 1, 2, 3, ...]
Escalar S = 42
Vetor V = [1, 2, 3, 4]
Matriz M = [[1, 0],[0, 1]]
Cubo ...
40
• Grafo de operações realizados nos tensores
• Grafo acíclico dirigido
• Grafo é definido em uma linguagem de nível mais alto (Python)
• Grafo é compilado e otimizado
• Grafo é executado nos dispositivos disponíveis (CPU, GPU)
• Dados (tensores) fluem através do grafo
41
Exemplo de criação do grafo
import tensorflow as tf
42
Exemplo de criação do grafo
Constant
(2.0)
a = 2
import tensorflow as tf
a = tf.constant(2.0)
43
Exemplo de criação do grafo
Constant
(2.0)
a = 2
Constant
(3.0)
b = 3
import tensorflow as tf
a = tf.constant(2.0)
b = tf.constant(3.0)
44
Exemplo de criação do grafo
Constant
(2.0)
a = 2
Constant
(3.0)
b = 3
Operação
Multiplicação
c = a * b
import tensorflow as tf
a = tf.constant(2.0)
b = tf.constant(3.0)
c = tf.multiply(a, b)
45
Exemplo de criação do grafo
import tensorflow as tf
a = tf.constant(2.0)
b = tf.constant(3.0)
c = tf.multiply(a, b)
with tf.Session() as sess:
print(sess.run(c))
Constant
(2.0)
a = 2
Constant
(3.0)
b = 3
Operação
Multiplicação
c = a * b
Output Retorna 6
46
Qual problema o TensorFlow resolve?
• Usar varias CPU e GPUs para treinar os modelos
• Problema: Escrever código otimizado e distribuído é difícil!
• Como resolver?
47
Arquitetura do TensorFlow
TensorFlow Core Execution Engine (C++)
CPU GPU Android iOS ...
Python Frontend C++ Frontend Java Frontend ...
48
Vamos ver um exemplo
MNIST
28x28
pixels
784 neurônios
na entrada
Input Layer Hidden Layers Output Layer
3 camadas:
32 neurônios
128 neurônios
32 neurônios
10 neurônios
na saída
49
Low Level API
import tensorflow as tf
from tensorflow.contrib.learn.python.learn.datasets.mnist import read_data_sets
mnist = read_data_sets("MNIST_data/", one_hot=True)
def create_layer(name, x_tensor, num_outputs):
shape = x_tensor.get_shape().as_list()[1:]
with tf.name_scope(name):
weights = tf.Variable(tf.random_normal([shape[0], num_outputs], stddev=0.1), name='Weights')
bias = tf.Variable(tf.zeros(num_outputs), name='biases')
fc = tf.add(tf.matmul(x_tensor, weights), bias)
fc = tf.nn.relu(fc)
tf.summary.histogram('histogram', fc)
return fc
sess = tf.InteractiveSession()
50
Low Level API
x = tf.placeholder(tf.float32, shape=[None,784])
y_ = tf.placeholder(tf.float32, shape=[None,10])
with tf.name_scope('dnn'):
h0 = create_layer('hidden_0', x, 32)
h1 = create_layer('hidden_1', h0, 128)
h2 = create_layer('hidden_2', h1, 32)
with tf.name_scope('logit'):
W = tf.Variable(tf.zeros([32, 10]), name='weights')
b = tf.Variable(tf.zeros([10]),name='biases')
y = tf.matmul(h2,W) + b
tf.summary.histogram('histogram', y)
cross_entropy = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits=y, labels=y_))
51
Low Level API
train_step = tf.train.GradientDescentOptimizer(0.5).minimize(cross_entropy)
correct_prediction = tf.equal(tf.argmax(y,1), tf.argmax(y_,1), name='correct_prediciton')
accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32), name='accuracy')
tf.summary.scalar('accuracy',accuracy)
merged = tf.summary.merge_all()
train_writer = tf.summary.FileWriter('/tmp/test/train',sess.graph)
test_writer = tf.summary.FileWriter('/tmp/test/test')
sess.run(tf.global_variables_initializer())
52
Low Level API
for i in range(2000):
if i%10 ==0:
summary, acc = sess.run([merged, accuracy],feed_dict={x: mnist.test.images, y_: mnist.test.labels})
test_writer.add_summary(summary,i)
print('Step: {}, Accuracy: {}'.format(i,acc))
else:
batch = mnist.train.next_batch(100)
summary, _ = sess.run([merged, train_step], feed_dict={x: batch[0], y_: batch[1]})
train_writer.add_summary(summary, i)
print(accuracy.eval(feed_dict={x: mnist.test.images, y_: mnist.test.labels}))
Acurácia final: 0.9645
53
High Level API
def generate_input_fn(dataset, batch_size=BATCH_SIZE):
def _input_fn():
X = tf.constant(dataset.images)
Y = tf.constant(dataset.labels.astype(numpy.int64))
image_batch, label_batch = tf.train.shuffle_batch([X,Y], batch_size=batch_size, capacity=8*batch_size,
min_after_dequeue=4*batch_size, enqueue_many=True)
return {'pixels': image_batch} , label_batch
return _input_fn
mnist = read_data_sets("MNIST_data/", one_hot=False)
feature_columns = [tf.contrib.layers.real_valued_column("pixels", dimension=784)]
classifier = tf.contrib.learn.DNNClassifier(feature_columns=feature_columns, hidden_units=[32, 128, 32],
n_classes=10, model_dir="/tmp/mnist_model_2")
classifier.fit(input_fn=generate_input_fn(mnist.train, batch_size=100), steps=2000)
accuracy_score = classifier.evaluate(input_fn=generate_input_fn(mnist.test, batch_size=100), steps=2000)['accuracy']
print('DNN Classifier Accuracy: {0:f}'.format(accuracy_score))
DNN Classifier Accuracy: 0.9635
54
Keras
from keras.models import Sequential
from keras.layers import Dense
from keras.optimizers import RMSprop
from tensorflow.contrib.learn.python.learn.datasets
.mnist import read_data_sets
mnist = read_data_sets("MNIST_data/", one_hot=True)
batch_size = 100
epochs = 20
x_train, y_train = mnist.train.next_batch(50000)
x_test, y_test = mnist.test.next_batch(10000)
model = Sequential()
model.add(Dense(32, activation='relu', input_shape=(784,)))
model.add(Dense(128, activation='relu'))
model.add(Dense(32, activation='relu'))
model.add(Dense(10, activation='softmax'))
model.summary()
model.compile(loss='categorical_crossentropy',
optimizer=RMSprop(),
metrics=['accuracy'])
history = model.fit(x_train, y_train, batch_size=batch_size,
verbose=1, validation_data=(x_test, y_test))
score = model.evaluate(x_test, y_test, verbose=0)
print('Test loss:', score[0])
print('Test accuracy:', score[1])
Test accuracy: 0.9685
55
TensorBoard
5656
Obrigado!
57
Referências e links
• http://playground.tensorflow.org/
• https://www.tensorflow.org/
• https://br.udacity.com/
• Machine Learning and TensorFlow:
• https://pt.slideshare.net/jpapo/machine-learning-tensor-flow
• Hands-on Tensorboard:
• https://www.youtube.com/watch?v=eBbEDRsCmv4&t=5s
• Intro to TensorFlow @ GDG global summit 2016:
• https://www.youtube.com/watch?v=SMltx_mHFsY&t=2s
• Adam Geitgey: Machine Learning is Fun!
• https://medium.com/@ageitgey/machine-learning-is-fun-80ea3ec3c471#.khzmtikoz

Mais conteúdo relacionado

Mais procurados

Apresentação recursividade rev2
Apresentação recursividade rev2Apresentação recursividade rev2
Apresentação recursividade rev2
Rogerio Oliveira
 
Algoritmo - tipos de dados
Algoritmo - tipos de dadosAlgoritmo - tipos de dados
Algoritmo - tipos de dados
Professor Samuel Ribeiro
 
Amostragem mauro grisi21092016
Amostragem mauro grisi21092016Amostragem mauro grisi21092016
Amostragem mauro grisi21092016
MARCELO GOMES DE ALMEIDA
 
Estruturas de dados com C++ e STL
Estruturas de dados com C++ e STLEstruturas de dados com C++ e STL
Estruturas de dados com C++ e STL
Marcos Castro
 
Gráfico em barras
Gráfico em barrasGráfico em barras
Gráfico em barras
Renata Araújo
 
Practical Machine Learning and Rails Part1
Practical Machine Learning and Rails Part1Practical Machine Learning and Rails Part1
Practical Machine Learning and Rails Part1
ryanstout
 
Introdução ao modelo clássico de regressão linear
Introdução ao modelo clássico de regressão linearIntrodução ao modelo clássico de regressão linear
Introdução ao modelo clássico de regressão linear
Felipe Pontes
 
Matemática financeira - Juros Simples e Compostos
Matemática financeira - Juros Simples e CompostosMatemática financeira - Juros Simples e Compostos
Matemática financeira - Juros Simples e Compostos
Isabela Coelho Malaquias
 
Bayesian Methods for Machine Learning
Bayesian Methods for Machine LearningBayesian Methods for Machine Learning
Bayesian Methods for Machine Learning
butest
 
1 ano função afim
1 ano   função afim1 ano   função afim
1 ano função afim
Ariosvaldo Carvalho
 
Limite de função de duas variáveis
Limite de função de duas variáveisLimite de função de duas variáveis
Limite de função de duas variáveis
Rodrigo Thiago Passos Silva
 
Tabela derivadas-e-integrais
Tabela derivadas-e-integraisTabela derivadas-e-integrais
Tabela derivadas-e-integrais
mariasousagomes
 
Estatística Para Engenharia - Correlação e Regressão Linear - Exercícios.
Estatística Para Engenharia - Correlação e Regressão Linear - Exercícios.Estatística Para Engenharia - Correlação e Regressão Linear - Exercícios.
Estatística Para Engenharia - Correlação e Regressão Linear - Exercícios.
Jean Paulo Mendes Alves
 
SVM & KNN Presentation.pptx
SVM & KNN Presentation.pptxSVM & KNN Presentation.pptx
SVM & KNN Presentation.pptx
MohamedMonir33
 
Hyperparameter Optimization for Machine Learning
Hyperparameter Optimization for Machine LearningHyperparameter Optimization for Machine Learning
Hyperparameter Optimization for Machine Learning
Francesco Casalegno
 
03.12 cnn backpropagation
03.12 cnn backpropagation03.12 cnn backpropagation
03.12 cnn backpropagation
Dea-hwan Ki
 
Computer Vision harris
Computer Vision harrisComputer Vision harris
Computer Vision harris
Wael Badawy
 
Aula 6 - Funções Exponenciais e Logarítmicas
Aula 6 - Funções Exponenciais e LogarítmicasAula 6 - Funções Exponenciais e Logarítmicas
Aula 6 - Funções Exponenciais e Logarítmicas
Turma1NC
 
Equação do 2º grau
Equação do 2º grauEquação do 2º grau
Equação do 2º grau
demervalm
 
Python bge
Python bgePython bge
Python bge
Tiago
 

Mais procurados (20)

Apresentação recursividade rev2
Apresentação recursividade rev2Apresentação recursividade rev2
Apresentação recursividade rev2
 
Algoritmo - tipos de dados
Algoritmo - tipos de dadosAlgoritmo - tipos de dados
Algoritmo - tipos de dados
 
Amostragem mauro grisi21092016
Amostragem mauro grisi21092016Amostragem mauro grisi21092016
Amostragem mauro grisi21092016
 
Estruturas de dados com C++ e STL
Estruturas de dados com C++ e STLEstruturas de dados com C++ e STL
Estruturas de dados com C++ e STL
 
Gráfico em barras
Gráfico em barrasGráfico em barras
Gráfico em barras
 
Practical Machine Learning and Rails Part1
Practical Machine Learning and Rails Part1Practical Machine Learning and Rails Part1
Practical Machine Learning and Rails Part1
 
Introdução ao modelo clássico de regressão linear
Introdução ao modelo clássico de regressão linearIntrodução ao modelo clássico de regressão linear
Introdução ao modelo clássico de regressão linear
 
Matemática financeira - Juros Simples e Compostos
Matemática financeira - Juros Simples e CompostosMatemática financeira - Juros Simples e Compostos
Matemática financeira - Juros Simples e Compostos
 
Bayesian Methods for Machine Learning
Bayesian Methods for Machine LearningBayesian Methods for Machine Learning
Bayesian Methods for Machine Learning
 
1 ano função afim
1 ano   função afim1 ano   função afim
1 ano função afim
 
Limite de função de duas variáveis
Limite de função de duas variáveisLimite de função de duas variáveis
Limite de função de duas variáveis
 
Tabela derivadas-e-integrais
Tabela derivadas-e-integraisTabela derivadas-e-integrais
Tabela derivadas-e-integrais
 
Estatística Para Engenharia - Correlação e Regressão Linear - Exercícios.
Estatística Para Engenharia - Correlação e Regressão Linear - Exercícios.Estatística Para Engenharia - Correlação e Regressão Linear - Exercícios.
Estatística Para Engenharia - Correlação e Regressão Linear - Exercícios.
 
SVM & KNN Presentation.pptx
SVM & KNN Presentation.pptxSVM & KNN Presentation.pptx
SVM & KNN Presentation.pptx
 
Hyperparameter Optimization for Machine Learning
Hyperparameter Optimization for Machine LearningHyperparameter Optimization for Machine Learning
Hyperparameter Optimization for Machine Learning
 
03.12 cnn backpropagation
03.12 cnn backpropagation03.12 cnn backpropagation
03.12 cnn backpropagation
 
Computer Vision harris
Computer Vision harrisComputer Vision harris
Computer Vision harris
 
Aula 6 - Funções Exponenciais e Logarítmicas
Aula 6 - Funções Exponenciais e LogarítmicasAula 6 - Funções Exponenciais e Logarítmicas
Aula 6 - Funções Exponenciais e Logarítmicas
 
Equação do 2º grau
Equação do 2º grauEquação do 2º grau
Equação do 2º grau
 
Python bge
Python bgePython bge
Python bge
 

Destaque

Primeira apr
Primeira aprPrimeira apr
Primeira apr
Vanessa Souza
 
DESENVOLVIMENTO E AVALIAÇÃO DE DESEMPENHO DO MECANISMO DE RECONHECIMENTO AUTO...
DESENVOLVIMENTO E AVALIAÇÃO DE DESEMPENHO DO MECANISMO DE RECONHECIMENTO AUTO...DESENVOLVIMENTO E AVALIAÇÃO DE DESEMPENHO DO MECANISMO DE RECONHECIMENTO AUTO...
DESENVOLVIMENTO E AVALIAÇÃO DE DESEMPENHO DO MECANISMO DE RECONHECIMENTO AUTO...
Leinylson Fontinele
 
tese_licenciatura-presentation
tese_licenciatura-presentationtese_licenciatura-presentation
tese_licenciatura-presentation
Meizal Popat
 
Delineamento Analises Multivariadas
Delineamento  Analises MultivariadasDelineamento  Analises Multivariadas
Delineamento Analises Multivariadas
buenobio
 
Bioestatística
 Bioestatística Bioestatística
Bioestatística
felipethoaldo
 
Analise estatistica excel
Analise estatistica excelAnalise estatistica excel
Analise estatistica excel
João Paulo Dendrolog
 
Ipaee capitulo 6_slides
Ipaee capitulo 6_slidesIpaee capitulo 6_slides
Ipaee capitulo 6_slides
Dharma Initiative
 
Anova spss
Anova spssAnova spss
Anova spss
Célia M. D. Sales
 
Slides machine learning festival path pdf
Slides machine learning festival path pdfSlides machine learning festival path pdf
Slides machine learning festival path pdf
Fabio Bottura
 
Regressao linear multipla
Regressao linear multiplaRegressao linear multipla
Regressao linear multipla
aniziorochaaraujo
 

Destaque (10)

Primeira apr
Primeira aprPrimeira apr
Primeira apr
 
DESENVOLVIMENTO E AVALIAÇÃO DE DESEMPENHO DO MECANISMO DE RECONHECIMENTO AUTO...
DESENVOLVIMENTO E AVALIAÇÃO DE DESEMPENHO DO MECANISMO DE RECONHECIMENTO AUTO...DESENVOLVIMENTO E AVALIAÇÃO DE DESEMPENHO DO MECANISMO DE RECONHECIMENTO AUTO...
DESENVOLVIMENTO E AVALIAÇÃO DE DESEMPENHO DO MECANISMO DE RECONHECIMENTO AUTO...
 
tese_licenciatura-presentation
tese_licenciatura-presentationtese_licenciatura-presentation
tese_licenciatura-presentation
 
Delineamento Analises Multivariadas
Delineamento  Analises MultivariadasDelineamento  Analises Multivariadas
Delineamento Analises Multivariadas
 
Bioestatística
 Bioestatística Bioestatística
Bioestatística
 
Analise estatistica excel
Analise estatistica excelAnalise estatistica excel
Analise estatistica excel
 
Ipaee capitulo 6_slides
Ipaee capitulo 6_slidesIpaee capitulo 6_slides
Ipaee capitulo 6_slides
 
Anova spss
Anova spssAnova spss
Anova spss
 
Slides machine learning festival path pdf
Slides machine learning festival path pdfSlides machine learning festival path pdf
Slides machine learning festival path pdf
 
Regressao linear multipla
Regressao linear multiplaRegressao linear multipla
Regressao linear multipla
 

Semelhante a Introdução a Machine Learning e TensorFlow

Tdc2010
Tdc2010Tdc2010
Inteligencia artificial 10
Inteligencia artificial 10Inteligencia artificial 10
Inteligencia artificial 10
Nauber Gois
 
Inteligencia Artificial e Aprendizado de Máquina
Inteligencia Artificial e Aprendizado de MáquinaInteligencia Artificial e Aprendizado de Máquina
Inteligencia Artificial e Aprendizado de Máquina
Gefferson Figueiredo Marcos
 
Python ES 2017 - Introdução ao Tensorflow
Python ES 2017 - Introdução ao TensorflowPython ES 2017 - Introdução ao Tensorflow
Python ES 2017 - Introdução ao Tensorflow
Fabrício Vargas Matos
 
Processamento digital de imagens com gnu octave jotacisio araujo oliveira fli...
Processamento digital de imagens com gnu octave jotacisio araujo oliveira fli...Processamento digital de imagens com gnu octave jotacisio araujo oliveira fli...
Processamento digital de imagens com gnu octave jotacisio araujo oliveira fli...
PotiLivre Sobrenome
 
Scipy meetup-2020-02
Scipy meetup-2020-02Scipy meetup-2020-02
Scipy meetup-2020-02
Renato Candido
 
Hands On TensorFlow and Keras
Hands On TensorFlow and KerasHands On TensorFlow and Keras
Hands On TensorFlow and Keras
Sandro Moreira
 
Oficina Android - Games com AndEngine - Dia 2
Oficina Android - Games com AndEngine - Dia 2Oficina Android - Games com AndEngine - Dia 2
Oficina Android - Games com AndEngine - Dia 2
Odair Bonin Borges
 
Algoritmo e estruturas de dados operações com matrizes
Algoritmo e estruturas de dados operações com matrizesAlgoritmo e estruturas de dados operações com matrizes
Algoritmo e estruturas de dados operações com matrizes
RADILSON RIPARDO DE FRETIAS
 
Apresentação Prof. Luis Fernando Martha e Rafael Rangel
Apresentação Prof. Luis Fernando Martha e Rafael Rangel Apresentação Prof. Luis Fernando Martha e Rafael Rangel
Apresentação Prof. Luis Fernando Martha e Rafael Rangel
Opencadd Advanced Technology
 
Comecando tensorflow
Comecando tensorflowComecando tensorflow
Comecando tensorflow
Sandro Moreira
 
Portando app JavaME S40 para C# WP7: Um estudo de caso real da app CalcSphere
Portando app JavaME S40 para C# WP7:  Um estudo de caso real da app CalcSpherePortando app JavaME S40 para C# WP7:  Um estudo de caso real da app CalcSphere
Portando app JavaME S40 para C# WP7: Um estudo de caso real da app CalcSphere
Eloi Júnior
 
Python para quem sabe Python (aula 2)
Python para quem sabe Python (aula 2)Python para quem sabe Python (aula 2)
Python para quem sabe Python (aula 2)
Luciano Ramalho
 
Objetos Pythonicos - compacto
Objetos Pythonicos - compactoObjetos Pythonicos - compacto
Objetos Pythonicos - compacto
Luciano Ramalho
 
MRO predict
MRO predictMRO predict
Jython no JavaOne Latin America 2011
Jython no JavaOne Latin America 2011Jython no JavaOne Latin America 2011
Jython no JavaOne Latin America 2011
Luciano Ramalho
 
Mini-curso Programação Paralela e Distribuída
Mini-curso Programação Paralela e DistribuídaMini-curso Programação Paralela e Distribuída
Mini-curso Programação Paralela e Distribuída
Deivid Martins
 
Algoritmos e Estruturas de Dados, edição de 2013/2014
Algoritmos e Estruturas de Dados, edição de 2013/2014Algoritmos e Estruturas de Dados, edição de 2013/2014
Algoritmos e Estruturas de Dados, edição de 2013/2014
Pedro Guerreiro
 
Automação de BackOffice de uma grande corporação financeira usando Visão Comp...
Automação de BackOffice de uma grande corporação financeira usando Visão Comp...Automação de BackOffice de uma grande corporação financeira usando Visão Comp...
Automação de BackOffice de uma grande corporação financeira usando Visão Comp...
FranciscoBrunodeSous
 
M2ti - Python Brasil
M2ti - Python BrasilM2ti - Python Brasil
M2ti - Python Brasil
Rodrigo Hübner
 

Semelhante a Introdução a Machine Learning e TensorFlow (20)

Tdc2010
Tdc2010Tdc2010
Tdc2010
 
Inteligencia artificial 10
Inteligencia artificial 10Inteligencia artificial 10
Inteligencia artificial 10
 
Inteligencia Artificial e Aprendizado de Máquina
Inteligencia Artificial e Aprendizado de MáquinaInteligencia Artificial e Aprendizado de Máquina
Inteligencia Artificial e Aprendizado de Máquina
 
Python ES 2017 - Introdução ao Tensorflow
Python ES 2017 - Introdução ao TensorflowPython ES 2017 - Introdução ao Tensorflow
Python ES 2017 - Introdução ao Tensorflow
 
Processamento digital de imagens com gnu octave jotacisio araujo oliveira fli...
Processamento digital de imagens com gnu octave jotacisio araujo oliveira fli...Processamento digital de imagens com gnu octave jotacisio araujo oliveira fli...
Processamento digital de imagens com gnu octave jotacisio araujo oliveira fli...
 
Scipy meetup-2020-02
Scipy meetup-2020-02Scipy meetup-2020-02
Scipy meetup-2020-02
 
Hands On TensorFlow and Keras
Hands On TensorFlow and KerasHands On TensorFlow and Keras
Hands On TensorFlow and Keras
 
Oficina Android - Games com AndEngine - Dia 2
Oficina Android - Games com AndEngine - Dia 2Oficina Android - Games com AndEngine - Dia 2
Oficina Android - Games com AndEngine - Dia 2
 
Algoritmo e estruturas de dados operações com matrizes
Algoritmo e estruturas de dados operações com matrizesAlgoritmo e estruturas de dados operações com matrizes
Algoritmo e estruturas de dados operações com matrizes
 
Apresentação Prof. Luis Fernando Martha e Rafael Rangel
Apresentação Prof. Luis Fernando Martha e Rafael Rangel Apresentação Prof. Luis Fernando Martha e Rafael Rangel
Apresentação Prof. Luis Fernando Martha e Rafael Rangel
 
Comecando tensorflow
Comecando tensorflowComecando tensorflow
Comecando tensorflow
 
Portando app JavaME S40 para C# WP7: Um estudo de caso real da app CalcSphere
Portando app JavaME S40 para C# WP7:  Um estudo de caso real da app CalcSpherePortando app JavaME S40 para C# WP7:  Um estudo de caso real da app CalcSphere
Portando app JavaME S40 para C# WP7: Um estudo de caso real da app CalcSphere
 
Python para quem sabe Python (aula 2)
Python para quem sabe Python (aula 2)Python para quem sabe Python (aula 2)
Python para quem sabe Python (aula 2)
 
Objetos Pythonicos - compacto
Objetos Pythonicos - compactoObjetos Pythonicos - compacto
Objetos Pythonicos - compacto
 
MRO predict
MRO predictMRO predict
MRO predict
 
Jython no JavaOne Latin America 2011
Jython no JavaOne Latin America 2011Jython no JavaOne Latin America 2011
Jython no JavaOne Latin America 2011
 
Mini-curso Programação Paralela e Distribuída
Mini-curso Programação Paralela e DistribuídaMini-curso Programação Paralela e Distribuída
Mini-curso Programação Paralela e Distribuída
 
Algoritmos e Estruturas de Dados, edição de 2013/2014
Algoritmos e Estruturas de Dados, edição de 2013/2014Algoritmos e Estruturas de Dados, edição de 2013/2014
Algoritmos e Estruturas de Dados, edição de 2013/2014
 
Automação de BackOffice de uma grande corporação financeira usando Visão Comp...
Automação de BackOffice de uma grande corporação financeira usando Visão Comp...Automação de BackOffice de uma grande corporação financeira usando Visão Comp...
Automação de BackOffice de uma grande corporação financeira usando Visão Comp...
 
M2ti - Python Brasil
M2ti - Python BrasilM2ti - Python Brasil
M2ti - Python Brasil
 

Último

História da Rádio- 1936-1970 século XIX .2.pptx
História da Rádio- 1936-1970 século XIX   .2.pptxHistória da Rádio- 1936-1970 século XIX   .2.pptx
História da Rádio- 1936-1970 século XIX .2.pptx
TomasSousa7
 
Certificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdfCertificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdf
joaovmp3
 
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdfDESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
Momento da Informática
 
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdfTOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
Momento da Informática
 
Manual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdfManual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdf
WELITONNOGUEIRA3
 
Logica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptxLogica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptx
Momento da Informática
 

Último (6)

História da Rádio- 1936-1970 século XIX .2.pptx
História da Rádio- 1936-1970 século XIX   .2.pptxHistória da Rádio- 1936-1970 século XIX   .2.pptx
História da Rádio- 1936-1970 século XIX .2.pptx
 
Certificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdfCertificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdf
 
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdfDESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
 
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdfTOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
 
Manual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdfManual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdf
 
Logica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptxLogica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptx
 

Introdução a Machine Learning e TensorFlow

  • 1. 1 Introdução a Machine Learning e TensorFlow Guilherme Campos
  • 2. 2 Agenda Conceitos • Machine Learning • Tipos de aprendizado • Deep Learning TensorFlow • O que é? • Grafos de execução • APIs • Tensorboard
  • 5. 5 Exemplo • Como classificar uma imagem como Maçã ou Laranja?
  • 9. 99 Novo problema? Comece tudo de novo!
  • 11. 11 Machine Learning – Aprendizagem de Máquina • Aprendizagem Supervisionado • Aprendizagem Não-supervisionado • Aprendizagem por Reforço
  • 12. 12 Aprendizagem supervisionada Caracteristicas Rotulo 1.jpg Maçã 2.jpg Laranja ... ... Classificador Buscar um padrão Conjunto de dados
  • 13. 13 Aprendizagem supervisionada • Árvores de decisão • Regressão Linear/Logística • Support Vector Machines • Redes Neurais • K- Vizinhos mais próximos
  • 14. 14 from sklearn import datasets, svm, metrics import matplotlib.pyplot as plt # Carrega o dataset digits = datasets.load_digits() # transforma a imagem em vetor n_samples = len(digits.images) data = digits.images.reshape((n_samples, -1)) x_train = data[:n_samples / 2] y_train = digits.target[:n_samples / 2] # cria um classificador SVM classifier = svm.SVC(gamma=0.001) # realiza o ajuste dos dados classifier.fit(x_train, y_train) esperado = digits.target[n_samples / 2:] predito = classifier.predict(data[n_samples / 2:])
  • 15. 15 Aprendizagem não supervisionada Caracteristicas Rotulo 1.jpg ? 2.jpg ? ... ??? Conjunto de dados Agrupamento Buscar um padrão
  • 16. 16 import matplotlib.pyplot as plt from sklearn.cluster import KMeans from sklearn.datasets import make_blobs n_samples = 1500 random_state = 170 X, y = make_blobs(n_samples=n_samples, random_state=random_state) y_pred = KMeans(n_clusters=3, random_state=random_state).fit_predict(X) plt.subplot(211) plt.scatter(X[:, 0], X[:, 1], c=y_pred) plt.title("Iniciado com 3 centroides") y_pred = KMeans(n_clusters=2, random_state=random_state).fit_predict(X) plt.subplot(212) plt.scatter(X[:, 0], X[:, 1], c=y_pred) plt.title("Iniciado com 2 centroides") plt.show()
  • 17. 17 Aprendizagem por reforço Estado Ação Recompensa ??? ? ? ??? ? ? ... ??? ??? Conjunto de estados Realiza uma ação Estado Ação Recompensa 1 UP 0 ??? ? ? ... ??? ??? Conjunto de estados
  • 18. 18 Aprendizagem por reforço • oi MarI/O OpenAI Gym
  • 21. 21 O você vê. 50 68 78 95 ... 67 21 23 42 71 59 58 31 47 19 29 39 ... O que o computador “vê”. pixels
  • 22. 22 import numpy as np import keras from keras.preprocessing import image from keras.applications.inception_v3 import preprocess_input, decode_predictions model = keras.applications.InceptionV3(weights='imagenet') img_path = 'aracari_castanho.jpg' img = image.load_img(img_path, target_size=(299,299)) x = image.img_to_array(img) x = np.expand_dims(x, axis=0) x = preprocess_input(x) preds = model.predict(x) # decode print('Predicted:', decode_predictions(preds, top=3)[0]) Toucan 71,27% Hornbill 16,84% School Bus 1,65% Predicted: [('n01843383', 'toucan', 0.71278381), ('n01829413', 'hornbill', 0.16843531), ('n04146614', 'school_bus', 0.01657751)]
  • 23. 23 import numpy as np import keras from keras.preprocessing import image from keras.applications.inception_v3 import preprocess_input, decode_predictions model = keras.applications.InceptionV3(weights='imagenet') img_path = 'arvore.jpg' img = image.load_img(img_path, target_size=(299, 299)) x = image.img_to_array(img) x = np.expand_dims(x, axis=0) x = preprocess_input(x) preds = model.predict(x) # decode print('Predicted:', decode_predictions(preds, top=3)[0]) Lakeside 21,76% Church 8,03% Valley 7,81% Predicted: [('n09332890', 'lakeside', 0.21762265), ('n03028079', 'church', 0.080397919), ('n09468604', 'valley', 0.078168809)]
  • 24. 24 import numpy as np import keras from keras.preprocessing import image from keras.applications.inception_v3 import preprocess_input, decode_predictions model = keras.applications.InceptionV3(weights='imagenet') img_path = 'alvaro.jpg' img = image.load_img(img_path, target_size=(299, 299)) x = image.img_to_array(img) x = np.expand_dims(x, axis=0) x = preprocess_input(x) preds = model.predict(x) # decode print('Predicted:', decode_predictions(preds, top=3)[0]) Jersey 51,26% Wig 2,58% Drumstick 2,12% Predicted: [('n03595614', 'jersey', 0.51262307), ('n04584207', 'wig', 0.025850503), ('n03250847', 'drumstick', 0.021243958)]
  • 25. 25 O que é deep learning? • Aprendizagem de representação dos dados. • Utiliza algoritmos hierárquicos com varias camadas. • Se alimentado com muitos dados consegue generalizar o problema.
  • 27. 27
  • 28. 28
  • 29. 29 Deep Learning Mais Processamento Mais dados Novos Modelos MNIST YouTube-8M
  • 30. 30 Deep Learning - Aplicações • Reconhecimento de voz • Visão computacional • Processamento de linguagem natural
  • 35. 35 TensorFlow Playground - http://playground.tensorflow.org/
  • 36. 36 TensorFlow •Biblioteca de machine Learning Open Source •Funções especificas para Deep Learning •O seu uso vai do desenvolvimento a produção
  • 37. 37 TensorFlow • Portável e escalável Laptop Datacenters Android iOS Raspberry Pi
  • 39. 39 • Vetor n-dimensional, onde n = [0, 1, 2, 3, ...] Escalar S = 42 Vetor V = [1, 2, 3, 4] Matriz M = [[1, 0],[0, 1]] Cubo ...
  • 40. 40 • Grafo de operações realizados nos tensores • Grafo acíclico dirigido • Grafo é definido em uma linguagem de nível mais alto (Python) • Grafo é compilado e otimizado • Grafo é executado nos dispositivos disponíveis (CPU, GPU) • Dados (tensores) fluem através do grafo
  • 41. 41 Exemplo de criação do grafo import tensorflow as tf
  • 42. 42 Exemplo de criação do grafo Constant (2.0) a = 2 import tensorflow as tf a = tf.constant(2.0)
  • 43. 43 Exemplo de criação do grafo Constant (2.0) a = 2 Constant (3.0) b = 3 import tensorflow as tf a = tf.constant(2.0) b = tf.constant(3.0)
  • 44. 44 Exemplo de criação do grafo Constant (2.0) a = 2 Constant (3.0) b = 3 Operação Multiplicação c = a * b import tensorflow as tf a = tf.constant(2.0) b = tf.constant(3.0) c = tf.multiply(a, b)
  • 45. 45 Exemplo de criação do grafo import tensorflow as tf a = tf.constant(2.0) b = tf.constant(3.0) c = tf.multiply(a, b) with tf.Session() as sess: print(sess.run(c)) Constant (2.0) a = 2 Constant (3.0) b = 3 Operação Multiplicação c = a * b Output Retorna 6
  • 46. 46 Qual problema o TensorFlow resolve? • Usar varias CPU e GPUs para treinar os modelos • Problema: Escrever código otimizado e distribuído é difícil! • Como resolver?
  • 47. 47 Arquitetura do TensorFlow TensorFlow Core Execution Engine (C++) CPU GPU Android iOS ... Python Frontend C++ Frontend Java Frontend ...
  • 48. 48 Vamos ver um exemplo MNIST 28x28 pixels 784 neurônios na entrada Input Layer Hidden Layers Output Layer 3 camadas: 32 neurônios 128 neurônios 32 neurônios 10 neurônios na saída
  • 49. 49 Low Level API import tensorflow as tf from tensorflow.contrib.learn.python.learn.datasets.mnist import read_data_sets mnist = read_data_sets("MNIST_data/", one_hot=True) def create_layer(name, x_tensor, num_outputs): shape = x_tensor.get_shape().as_list()[1:] with tf.name_scope(name): weights = tf.Variable(tf.random_normal([shape[0], num_outputs], stddev=0.1), name='Weights') bias = tf.Variable(tf.zeros(num_outputs), name='biases') fc = tf.add(tf.matmul(x_tensor, weights), bias) fc = tf.nn.relu(fc) tf.summary.histogram('histogram', fc) return fc sess = tf.InteractiveSession()
  • 50. 50 Low Level API x = tf.placeholder(tf.float32, shape=[None,784]) y_ = tf.placeholder(tf.float32, shape=[None,10]) with tf.name_scope('dnn'): h0 = create_layer('hidden_0', x, 32) h1 = create_layer('hidden_1', h0, 128) h2 = create_layer('hidden_2', h1, 32) with tf.name_scope('logit'): W = tf.Variable(tf.zeros([32, 10]), name='weights') b = tf.Variable(tf.zeros([10]),name='biases') y = tf.matmul(h2,W) + b tf.summary.histogram('histogram', y) cross_entropy = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits=y, labels=y_))
  • 51. 51 Low Level API train_step = tf.train.GradientDescentOptimizer(0.5).minimize(cross_entropy) correct_prediction = tf.equal(tf.argmax(y,1), tf.argmax(y_,1), name='correct_prediciton') accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32), name='accuracy') tf.summary.scalar('accuracy',accuracy) merged = tf.summary.merge_all() train_writer = tf.summary.FileWriter('/tmp/test/train',sess.graph) test_writer = tf.summary.FileWriter('/tmp/test/test') sess.run(tf.global_variables_initializer())
  • 52. 52 Low Level API for i in range(2000): if i%10 ==0: summary, acc = sess.run([merged, accuracy],feed_dict={x: mnist.test.images, y_: mnist.test.labels}) test_writer.add_summary(summary,i) print('Step: {}, Accuracy: {}'.format(i,acc)) else: batch = mnist.train.next_batch(100) summary, _ = sess.run([merged, train_step], feed_dict={x: batch[0], y_: batch[1]}) train_writer.add_summary(summary, i) print(accuracy.eval(feed_dict={x: mnist.test.images, y_: mnist.test.labels})) Acurácia final: 0.9645
  • 53. 53 High Level API def generate_input_fn(dataset, batch_size=BATCH_SIZE): def _input_fn(): X = tf.constant(dataset.images) Y = tf.constant(dataset.labels.astype(numpy.int64)) image_batch, label_batch = tf.train.shuffle_batch([X,Y], batch_size=batch_size, capacity=8*batch_size, min_after_dequeue=4*batch_size, enqueue_many=True) return {'pixels': image_batch} , label_batch return _input_fn mnist = read_data_sets("MNIST_data/", one_hot=False) feature_columns = [tf.contrib.layers.real_valued_column("pixels", dimension=784)] classifier = tf.contrib.learn.DNNClassifier(feature_columns=feature_columns, hidden_units=[32, 128, 32], n_classes=10, model_dir="/tmp/mnist_model_2") classifier.fit(input_fn=generate_input_fn(mnist.train, batch_size=100), steps=2000) accuracy_score = classifier.evaluate(input_fn=generate_input_fn(mnist.test, batch_size=100), steps=2000)['accuracy'] print('DNN Classifier Accuracy: {0:f}'.format(accuracy_score)) DNN Classifier Accuracy: 0.9635
  • 54. 54 Keras from keras.models import Sequential from keras.layers import Dense from keras.optimizers import RMSprop from tensorflow.contrib.learn.python.learn.datasets .mnist import read_data_sets mnist = read_data_sets("MNIST_data/", one_hot=True) batch_size = 100 epochs = 20 x_train, y_train = mnist.train.next_batch(50000) x_test, y_test = mnist.test.next_batch(10000) model = Sequential() model.add(Dense(32, activation='relu', input_shape=(784,))) model.add(Dense(128, activation='relu')) model.add(Dense(32, activation='relu')) model.add(Dense(10, activation='softmax')) model.summary() model.compile(loss='categorical_crossentropy', optimizer=RMSprop(), metrics=['accuracy']) history = model.fit(x_train, y_train, batch_size=batch_size, verbose=1, validation_data=(x_test, y_test)) score = model.evaluate(x_test, y_test, verbose=0) print('Test loss:', score[0]) print('Test accuracy:', score[1]) Test accuracy: 0.9685
  • 57. 57 Referências e links • http://playground.tensorflow.org/ • https://www.tensorflow.org/ • https://br.udacity.com/ • Machine Learning and TensorFlow: • https://pt.slideshare.net/jpapo/machine-learning-tensor-flow • Hands-on Tensorboard: • https://www.youtube.com/watch?v=eBbEDRsCmv4&t=5s • Intro to TensorFlow @ GDG global summit 2016: • https://www.youtube.com/watch?v=SMltx_mHFsY&t=2s • Adam Geitgey: Machine Learning is Fun! • https://medium.com/@ageitgey/machine-learning-is-fun-80ea3ec3c471#.khzmtikoz