SlideShare ist ein Scribd-Unternehmen logo
1 von 64
Theano
Alto desempenho em Machine Learning
Felipe Martins
11 de Abril de 2015
Quem?
Universidade Federal do Ceará
- Bacharelado em Computação;
LSBD
- Líder técnico em projetos usando C e C++;
Quem?
Universidade Federal do Ceará
- Bacharelado em Computação;
LSBD
- Líder técnico em projetos usando C e C++;
Por aí...
@ffmmjj_martins
https://github.com/ffmmjj
Roteiro
● Contexto;
● O que é a Theano;
● Exemplo;
Contexto
Python e Computação Científica
Contexto
Python e Computação Científica
Contexto
Mas Python não é uma
linguagem “lenta”!?!
Contexto
Depende :-)
Contexto
Depende :-)
Contexto
Depende :-)
PyCUDA
Contexto
Machine Learning
Contexto
Machine Learning
Contexto
Machine Learning
Não suporta execução
em GPUs :(
O que é Theano
Biblioteca de computação simbólica para Machine
Learning;
Otimiza expressões matemáticas e compila-as para código
nativo;
Permite execução em GPUs!
O que é Theano
Exemplo: multiplicar duas matrizes 1000 x 1000;
O que é Theano
Exemplo: multiplicar duas matrizes 1000 x 1000;
import theano
import theano.tensor as T
O que é Theano
Exemplo: multiplicar duas matrizes 1000 x 1000;
import theano
import theano.tensor as T
X = T.dmatrix('X')
Y = T.dmatrix('Y')
O que é Theano
Exemplo: multiplicar duas matrizes 1000 x 1000;
import theano
import theano.tensor as T
X = T.dmatrix('X')
Y = T.dmatrix('Y')
Z = X*Y
O que é Theano
Exemplo: multiplicar duas matrizes 1000 x 1000;
import theano
import theano.tensor as T
X = T.dmatrix('X')
Y = T.dmatrix('Y')
Z = X*Y
f = theano.function([X, Y], Z)
O que é Theano
Exemplo: multiplicar duas matrizes 1000 x 1000;
import theano x = [[1, 2], [3, 4]]
import theano.tensor as T y = [[5, 6], [7, 8]]
X = T.dmatrix('X') z = f(x, y)
Y = T.dmatrix('Y')
Z = X*Y
f = theano.function([X, Y], Z)
O que é Theano
Existem 3 maneiras de ajustar as configurações da Theano
(na seguinte ordem de precedência):
Módulo theano.config
Arquivo .theanorc
Variável de ambiente THEANO_FLAGS
O que é Theano
theano.config
import theano
theano.config.floatx = ‘float32’
theano.config.device = ‘gpu0’
theano.config.nvcc.fastmath = ‘True’
O que é Theano
~/.theanorc
O que é Theano
THEANO_FLAGS
THEANO_FLAGS='floatX=float32,device=gpu0,nvcc.fastmath=True'
export THEANO_FLAGS
python <myscript>.py
O que é Theano
Gradientes...
O que é Theano
Gradientes…
x = T.dscalar(‘x’)
y = x ** 2
fy = theano.function([x], y)
O que é Theano
Gradientes…
x = T.dscalar(‘x’)
y = x ** 2
fy = theano.function([x], y)
Dy = T.grad(y, x)
O que é Theano
Gradientes…
x = T.dscalar(‘x’)
y = x ** 2
fy = theano.function([x], y)
Dy = T.grad(y, x)
Df = theano.function([x], dy)
Exemplo
Exemplo
Machine Learning em 5 minutos :)
Exemplo
Machine Learning em 5 minutos :)
Modelo: Representação dos dados reais;
Exemplo
Machine Learning em 5 minutos :)
Modelo: Representação dos dados reais;
Custo: O quanto o modelo se aproxima dos dados reais;
Exemplo
Machine Learning em 5 minutos :)
Modelo: Representação dos dados reais;
Custo: O quanto o modelo se aproxima dos dados reais;
Treinamento: Como minimizar o custo;
Exemplo
Modelo
R$
m²
Exemplo
R$
m²
Modelo
Exemplo
Modelo
R$
m²
Exemplo
Custo
R$
m²
Exemplo
Custo
R$
m²
Exemplo
Custo
R$
m²
Média aritmética
dos erros
Exemplo
Custo
R$
m²
Média aritmética
dos erros
Exemplo
Treinamento
R$
m²
Exemplo
Treinamento
R$
m²
Exemplo
Treinamento
R$
m²
Exemplo
Treinamento
R$
m²
Exemplo
R$
m²
Treinamento
Exemplo
R$
m²
Treinamento
Como?!?
Exemplo
R$
m²
Treinamento
Como?!?
Exemplo
R$
m²
Treinamento
Como?!?
Modificando
parâmetros...
Exemplo
Treinamento
Exemplo
Treinamento
Exemplo
Treinamento
Custo
Exemplo
Treinamento
Custo
Exemplo
Treinamento
Custo
Exemplo
Treinamento
Custo
Exemplo
Treinamento
Custo
Exemplo
Treinamento
Custo
Exemplo
Treinamento
Custo
:(
Exemplo
De volta ao Python!
Exemplo
De volta ao Python!
alpha = T.dvector('a') a = 0.5
x = T.dvector('x') for i in
range(50):
t = T.dvector('t')
a = a - 0.0001 * Dj(a, X, T)
y = x * alpha
custo = T.sum((y - t)**2)
custo_derivada = theano.grad(custo, alpha)
J = theano.function([alpha, x, t], custo) / T.size(t)[0]
Dj = theano.function([alpha, x, t], custo_derivada)
Exemplo “real”
Rede neural para classificar dígitos manuscritos
Exemplo “real”
Rede neural para classificar dígitos manuscritos
Exemplo “real”
Rede neural para classificar dígitos manuscritos
Exemplo
Rede neural para classificar dígitos manuscritos
FIM!

Weitere ähnliche Inhalte

Was ist angesagt?

Golang para desenvolvedores pragmáticos parte 2
Golang para desenvolvedores pragmáticos  parte 2Golang para desenvolvedores pragmáticos  parte 2
Golang para desenvolvedores pragmáticos parte 2Wilson Júnior
 
Python No Terra (2006-12-21)
Python No Terra  (2006-12-21)Python No Terra  (2006-12-21)
Python No Terra (2006-12-21)Rudá Moura
 
Escreva aplicações web assíncronas com python3 + tornado
Escreva aplicações web assíncronas com python3 + tornadoEscreva aplicações web assíncronas com python3 + tornado
Escreva aplicações web assíncronas com python3 + tornadoWilson Júnior
 
Desenvolvendo aplicações web com python e web2py
Desenvolvendo aplicações web com python e web2pyDesenvolvendo aplicações web com python e web2py
Desenvolvendo aplicações web com python e web2pyGilson Filho
 
Programação Concorrente - Aula 04
Programação Concorrente - Aula 04Programação Concorrente - Aula 04
Programação Concorrente - Aula 04thomasdacosta
 
Introdução ao Framework Grails
Introdução ao Framework GrailsIntrodução ao Framework Grails
Introdução ao Framework GrailsBruno Catão
 
Python e Linux para a criação de ferramentas para pentest
Python e Linux para a criação de ferramentas para pentestPython e Linux para a criação de ferramentas para pentest
Python e Linux para a criação de ferramentas para pentestEdson Celio
 
Código legado - PHP Conference Brasil - 2014
Código legado - PHP Conference Brasil - 2014Código legado - PHP Conference Brasil - 2014
Código legado - PHP Conference Brasil - 2014Michael Castillo Granados
 
007 programando em python - funcoes
007   programando em python - funcoes007   programando em python - funcoes
007 programando em python - funcoesLeandro Barbosa
 
Desenvolvimento web com python e django
Desenvolvimento web com python e djangoDesenvolvimento web com python e django
Desenvolvimento web com python e djangoIgor Sobreira
 
013 programando em python - arquivos
013   programando em python - arquivos013   programando em python - arquivos
013 programando em python - arquivosLeandro Barbosa
 
Desenvolvendo Extensões PECL
Desenvolvendo Extensões PECLDesenvolvendo Extensões PECL
Desenvolvendo Extensões PECLW3P Projetos Web
 
Algoritmos e Estrutura de Dados - Aula 04
Algoritmos e Estrutura de Dados - Aula 04Algoritmos e Estrutura de Dados - Aula 04
Algoritmos e Estrutura de Dados - Aula 04thomasdacosta
 
Design de código: princípios e práticas para ter um código sustentável
Design de código: princípios e práticas para ter um código sustentávelDesign de código: princípios e práticas para ter um código sustentável
Design de código: princípios e práticas para ter um código sustentávelAndrews Medina
 
Programando em python funcoes
Programando em python   funcoesProgramando em python   funcoes
Programando em python funcoessamuelthiago
 

Was ist angesagt? (20)

Golang para desenvolvedores pragmáticos parte 2
Golang para desenvolvedores pragmáticos  parte 2Golang para desenvolvedores pragmáticos  parte 2
Golang para desenvolvedores pragmáticos parte 2
 
Python No Terra (2006-12-21)
Python No Terra  (2006-12-21)Python No Terra  (2006-12-21)
Python No Terra (2006-12-21)
 
Escreva aplicações web assíncronas com python3 + tornado
Escreva aplicações web assíncronas com python3 + tornadoEscreva aplicações web assíncronas com python3 + tornado
Escreva aplicações web assíncronas com python3 + tornado
 
Python 03
Python 03Python 03
Python 03
 
Desenvolvendo aplicações web com python e web2py
Desenvolvendo aplicações web com python e web2pyDesenvolvendo aplicações web com python e web2py
Desenvolvendo aplicações web com python e web2py
 
Programação Concorrente - Aula 04
Programação Concorrente - Aula 04Programação Concorrente - Aula 04
Programação Concorrente - Aula 04
 
Introdução ao Framework Grails
Introdução ao Framework GrailsIntrodução ao Framework Grails
Introdução ao Framework Grails
 
Python e Linux para a criação de ferramentas para pentest
Python e Linux para a criação de ferramentas para pentestPython e Linux para a criação de ferramentas para pentest
Python e Linux para a criação de ferramentas para pentest
 
Código legado - PHP Conference Brasil - 2014
Código legado - PHP Conference Brasil - 2014Código legado - PHP Conference Brasil - 2014
Código legado - PHP Conference Brasil - 2014
 
007 programando em python - funcoes
007   programando em python - funcoes007   programando em python - funcoes
007 programando em python - funcoes
 
Redes Neurais com PHP
Redes Neurais com PHPRedes Neurais com PHP
Redes Neurais com PHP
 
Ruby
RubyRuby
Ruby
 
Desenvolvimento web com python e django
Desenvolvimento web com python e djangoDesenvolvimento web com python e django
Desenvolvimento web com python e django
 
013 programando em python - arquivos
013   programando em python - arquivos013   programando em python - arquivos
013 programando em python - arquivos
 
Desenvolvendo Extensões PECL
Desenvolvendo Extensões PECLDesenvolvendo Extensões PECL
Desenvolvendo Extensões PECL
 
Algoritmos e Estrutura de Dados - Aula 04
Algoritmos e Estrutura de Dados - Aula 04Algoritmos e Estrutura de Dados - Aula 04
Algoritmos e Estrutura de Dados - Aula 04
 
Monitorando aplicações com Prometheus
Monitorando aplicações com PrometheusMonitorando aplicações com Prometheus
Monitorando aplicações com Prometheus
 
Apresentação de TDD na Fatec Jundiaí
Apresentação de TDD na Fatec JundiaíApresentação de TDD na Fatec Jundiaí
Apresentação de TDD na Fatec Jundiaí
 
Design de código: princípios e práticas para ter um código sustentável
Design de código: princípios e práticas para ter um código sustentávelDesign de código: princípios e práticas para ter um código sustentável
Design de código: princípios e práticas para ter um código sustentável
 
Programando em python funcoes
Programando em python   funcoesProgramando em python   funcoes
Programando em python funcoes
 

Ähnlich wie Theano - Alto Desempenho em Machine Learning

Introducao ao python - Luciana Mota
Introducao ao python - Luciana MotaIntroducao ao python - Luciana Mota
Introducao ao python - Luciana Motalucianacmota
 
Python e 10 motivos por que devo conhece-la ?
Python e 10 motivos por que devo conhece-la ?Python e 10 motivos por que devo conhece-la ?
Python e 10 motivos por que devo conhece-la ?Marcel Caraciolo
 
Por que Python - Latinoware 2008
Por que Python - Latinoware 2008Por que Python - Latinoware 2008
Por que Python - Latinoware 2008Marco Mendes
 
Python Pythononcampus Uva 060609
Python Pythononcampus Uva 060609Python Pythononcampus Uva 060609
Python Pythononcampus Uva 060609gsroma
 
Por que Python?
Por que Python?Por que Python?
Por que Python?gsroma
 
Aula 01 python
Aula 01 pythonAula 01 python
Aula 01 pythonTiago
 
Programando para web com python - Introdução a Python
Programando para web com python - Introdução a PythonProgramando para web com python - Introdução a Python
Programando para web com python - Introdução a PythonAlvaro Oliveira
 
PL/Python: Programando em Python no PostgreSQL
PL/Python: Programando em Python no PostgreSQLPL/Python: Programando em Python no PostgreSQL
PL/Python: Programando em Python no PostgreSQLJuliano Atanazio
 
Cherrypy - um framework para desenvolvimento rápido de aplicações web
Cherrypy - um framework para desenvolvimento rápido de aplicações webCherrypy - um framework para desenvolvimento rápido de aplicações web
Cherrypy - um framework para desenvolvimento rápido de aplicações webAlvaro Oliveira
 
Introdução à Programação em Python
Introdução à Programação em PythonIntrodução à Programação em Python
Introdução à Programação em PythonRodrigo Hübner
 
Por que Python? - PythonBrasil[5] - 2009
Por que Python? - PythonBrasil[5] - 2009Por que Python? - PythonBrasil[5] - 2009
Por que Python? - PythonBrasil[5] - 2009Marco Mendes
 
Por que Python? - FISL 10 - 2009
Por que Python? - FISL 10 - 2009Por que Python? - FISL 10 - 2009
Por que Python? - FISL 10 - 2009Marco Mendes
 

Ähnlich wie Theano - Alto Desempenho em Machine Learning (20)

Ecossistema Python
Ecossistema PythonEcossistema Python
Ecossistema Python
 
Introducao ao python - Luciana Mota
Introducao ao python - Luciana MotaIntroducao ao python - Luciana Mota
Introducao ao python - Luciana Mota
 
Python e 10 motivos por que devo conhece-la ?
Python e 10 motivos por que devo conhece-la ?Python e 10 motivos por que devo conhece-la ?
Python e 10 motivos por que devo conhece-la ?
 
Porque Python?
Porque Python?Porque Python?
Porque Python?
 
Por que Python - Latinoware 2008
Por que Python - Latinoware 2008Por que Python - Latinoware 2008
Por que Python - Latinoware 2008
 
Python Pythononcampus Uva 060609
Python Pythononcampus Uva 060609Python Pythononcampus Uva 060609
Python Pythononcampus Uva 060609
 
Python brasil[6]
Python brasil[6]Python brasil[6]
Python brasil[6]
 
Python
PythonPython
Python
 
Por que Python?
Por que Python?Por que Python?
Por que Python?
 
Aula 01 python
Aula 01 pythonAula 01 python
Aula 01 python
 
Dojo de Python
Dojo de PythonDojo de Python
Dojo de Python
 
Programando para web com python - Introdução a Python
Programando para web com python - Introdução a PythonProgramando para web com python - Introdução a Python
Programando para web com python - Introdução a Python
 
PL/Python: Programando em Python no PostgreSQL
PL/Python: Programando em Python no PostgreSQLPL/Python: Programando em Python no PostgreSQL
PL/Python: Programando em Python no PostgreSQL
 
Workshop Python
Workshop PythonWorkshop Python
Workshop Python
 
Cherrypy - um framework para desenvolvimento rápido de aplicações web
Cherrypy - um framework para desenvolvimento rápido de aplicações webCherrypy - um framework para desenvolvimento rápido de aplicações web
Cherrypy - um framework para desenvolvimento rápido de aplicações web
 
Introdução à Programação em Python
Introdução à Programação em PythonIntrodução à Programação em Python
Introdução à Programação em Python
 
Por que Python? - PythonBrasil[5] - 2009
Por que Python? - PythonBrasil[5] - 2009Por que Python? - PythonBrasil[5] - 2009
Por que Python? - PythonBrasil[5] - 2009
 
Por que Python? - FISL 10 - 2009
Por que Python? - FISL 10 - 2009Por que Python? - FISL 10 - 2009
Por que Python? - FISL 10 - 2009
 
Mini Curso Python
Mini Curso PythonMini Curso Python
Mini Curso Python
 
Python-Fenalivre-Imed
Python-Fenalivre-ImedPython-Fenalivre-Imed
Python-Fenalivre-Imed
 

Theano - Alto Desempenho em Machine Learning