Theano - Alto Desempenho em Machine Learning
-
Upload
felipe-martins -
Category
Technology
-
view
105 -
download
3
Transcript of Theano - Alto Desempenho em Machine Learning
TheanoAlto desempenho em Machine Learning
Felipe Martins11 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_martinshttps://github.com/ffmmjj
Roteiro● Contexto;● O que é a Theano;● Exemplo;
ContextoPython e Computação Científica
ContextoPython e Computação Científica
Contexto
Mas Python não é uma linguagem “lenta”!?!
ContextoDepende :-)
ContextoDepende :-)
ContextoDepende :-)
PyCUDA
ContextoMachine Learning
ContextoMachine Learning
ContextoMachine Learning
Não suporta execução em GPUs :(
O que é TheanoBiblioteca 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 é TheanoExemplo: multiplicar duas matrizes 1000 x 1000;
O que é TheanoExemplo: multiplicar duas matrizes 1000 x 1000;
import theanoimport theano.tensor as T
O que é TheanoExemplo: multiplicar duas matrizes 1000 x 1000;
import theanoimport theano.tensor as TX = T.dmatrix('X')Y = T.dmatrix('Y')
O que é TheanoExemplo: multiplicar duas matrizes 1000 x 1000;
import theanoimport theano.tensor as TX = T.dmatrix('X')Y = T.dmatrix('Y')Z = X*Y
O que é TheanoExemplo: multiplicar duas matrizes 1000 x 1000;
import theanoimport theano.tensor as TX = T.dmatrix('X')Y = T.dmatrix('Y')Z = X*Yf = theano.function([X, Y], Z)
O que é TheanoExemplo: 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*Yf = theano.function([X, Y], Z)
O que é TheanoExistem 3 maneiras de ajustar as configurações da Theano(na seguinte ordem de precedência):
Módulo theano.configArquivo .theanorcVariável de ambiente THEANO_FLAGS
O que é Theanotheano.config
import theanotheano.config.floatx = ‘float32’theano.config.device = ‘gpu0’theano.config.nvcc.fastmath = ‘True’
O que é Theano~/.theanorc
O que é TheanoTHEANO_FLAGS
THEANO_FLAGS='floatX=float32,device=gpu0,nvcc.fastmath=True'export THEANO_FLAGS python <myscript>.py
O que é TheanoGradientes...
O que é TheanoGradientes…
x = T.dscalar(‘x’)
y = x ** 2
fy = theano.function([x], y)
O que é TheanoGradientes…
x = T.dscalar(‘x’)
y = x ** 2
fy = theano.function([x], y)
Dy = T.grad(y, x)
O que é TheanoGradientes…
x = T.dscalar(‘x’)
y = x ** 2
fy = theano.function([x], y)
Dy = T.grad(y, x)
Df = theano.function([x], dy)
Exemplo
ExemploMachine Learning em 5 minutos :)
ExemploMachine Learning em 5 minutos :)
Modelo: Representação dos dados reais;
ExemploMachine Learning em 5 minutos :)
Modelo: Representação dos dados reais;
Custo: O quanto o modelo se aproxima dos dados reais;
ExemploMachine 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;
ExemploModelo
R$
m²
Exemplo
R$
m²
Modelo
ExemploModelo
R$
m²
ExemploCusto
R$
m²
ExemploCusto
R$
m²
ExemploCusto
R$
m²
Média aritmética dos erros
ExemploCusto
R$
m²
Média aritmética dos erros
ExemploTreinamento
R$
m²
ExemploTreinamento
R$
m²
ExemploTreinamento
R$
m²
ExemploTreinamento
R$
m²
Exemplo
R$
m²
Treinamento
Exemplo
R$
m²
Treinamento
Como?!?
Exemplo
R$
m²
Treinamento
Como?!?
Exemplo
R$
m²
Treinamento
Como?!?
Modificando parâmetros...
ExemploTreinamento
ExemploTreinamento
ExemploTreinamento
Custo
ExemploTreinamento
Custo
ExemploTreinamento
Custo
ExemploTreinamento
Custo
ExemploTreinamento
Custo
ExemploTreinamento
Custo
ExemploTreinamento
Custo
:(
ExemploDe volta ao Python!
ExemploDe 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
ExemploRede neural para classificar dígitos manuscritos
FIM!