Sign up with your email address to be the first to know about new products, VIP offers, blog features & more.

Tag Archives theano

Curso breve de aprendizaje supervisado con Theano en Linux Hispano

El aprendizaje supervisado es la tarea de aprendizaje de una máquina para inferir una función a partir de datos de entrenamiento etiquetados.

Theano es una librería que te permite definir, optimizar y evaluar expresiones matemáticas de manera eficiente. Al estar basado en Python, resulta una herramienta muy útil y fácil de usar para el desarrollo de modelos mediante aprendizaje supervisado, entre otras muchas más cosas.

Desde Linux Hispano, te presentamos un breve curso donde aprenderás a crear una regresión lineal, una regresión logística y varias redes neuronales artificales.

Enlace: Curso breve de aprendizaje supervisado con Theano.

Red neuronal convolucional – Theano

Aquí os dejo con un ejemplo (red_neuronal_convolucional.py) muy sencillo y claro para realizar una red neuronal convolucional.

import theano
from theano import tensor as T
from theano.sandbox.rng_mrg import MRG_RandomStreams as RandomStreams
import numpy as np
from Load import mnist
from theano.tensor.nnet.conv import conv2d
from theano.tensor.signal.downsample import max_pool_2d

srng = RandomStreams()

def floatX(X):
return np.asarray(X, dtype=theano.config.floatX)

def init_weights(shape):
return theano.shared(floatX(np.random.randn(*shape) * 0.01))

def rectify(X):
return T.maximum(X, 0.)

def softmax(X):
e_x = T.exp(X – X.max(axis=1).dimshuffle(0, ‘x’))
return e_x / e_x.sum(axis=1).dimshuffle(0, ‘x’)

def dropout(X, p=0.):
if p 0:
retain_prob = 1 – p
X *= srng.binomial(X.shape, p=retain_prob, dtype=theano.config.floatX)
X /= retain_prob
return X

def RMSprop(cost,

Red neuronal moderna – Theano

Aquí os dejo con un ejemplo (red_neuronal_moderna.py) muy sencillo y claro para realizar una red neuronal moderna.

import theano
from theano import tensor as T
from theano.sandbox.rng_mrg import MRG_RandomStreams as RandomStreams
import numpy as np
from Load import mnist

srng = RandomStreams()

def floatX(X):
return np.asarray(X, dtype=theano.config.floatX)

def init_weights(shape):
return theano.shared(floatX(np.random.randn(*shape) * 0.01))

def rectify(X):
return T.maximum(X, 0.)

def softmax(X):
e_x = T.exp(X – X.max(axis=1).dimshuffle(0, ‘x’))
return e_x / e_x.sum(axis=1).dimshuffle(0, ‘x’)

def RMSprop(cost, params, lr=0.001, rho=0.9, epsilon=1e-6):
grads = T.grad(cost=cost, wrt=params)
updates = []
for p, g in zip(params, grads):
acc = theano.shared(p.get_value() * 0.)
acc_new = rho * acc + (1 – rho) * g ** 2
gradient_scaling = T.sqrt(acc_new + epsilon)
g = g / gradient_scaling
updates.append((acc,

Red neuronal clásica – Theano

Aquí os dejo con un ejemplo (red_neuronal_clasica.py) muy sencillo y claro para realizar una red neuronal clásica.

import theano
from theano import tensor as T
import numpy as np
from Load import mnist
from scipy.misc import imsave

def floatX(X):
return np.asarray(X, dtype=theano.config.floatX)

def init_weights(shape):
return theano.shared(floatX(np.random.randn(*shape) * 0.01))

def sgd(cost, params, lr=0.05):
grads = T.grad(cost=cost, wrt=params)
updates = []
for p, g in zip(params, grads):
updates.append([p, p – g * lr])
return updates

def model(X, w_h, w_o):
h = T.nnet.sigmoid(T.dot(X, w_h))
pyx = T.nnet.softmax(T.dot(h, w_o))
return pyx

trX, teX, trY, teY = mnist(onehot=True)

X = T.fmatrix()
Y = T.fmatrix()

w_h = init_weights((784,

Regresión lineal – Theano

Aquí os dejo con un ejemplo (regresion_lineal.py) muy sencillo y claro para realizar una regresión lineal.

import numpy as np
import theano
from theano import tensor as T
import matplotlib.pyplot as plt

trX = np.linspace(-1, 1, 101)
trY = 2 * trX + np.random.randn(*trX.shape) * 0.33

X = T.scalar()
Y = T.scalar()

def model(X, w):
return X * w

w = theano.shared(np.asarray(0., dtype=theano.config.floatX))
y = model(X, w)

cost = T.mean(T.sqr(y – Y))
gradient = T.grad(cost=cost, wrt=w)
updates = [[w, w – gradient * 0.01]]

train = theano.function(inputs=[X, Y], outputs=cost, updates=updates,
allow_input_downcast=True)

for i in range(100):
for x, y in zip(trX,

Instalar Theano en Ubuntu o Debian

theano

Theano es una librería de matemática para Python, se usa mucho en Deep Learning.

Aquí os dejo los pasos a seguir para instalar Theano en una distribución basada en Debian (o en Ubuntu, claro):

sudo apt-get install build-essential libopenblas-dev git
sudo apt-get install python3 python3-dev python3-pip python3-numpy python3-scipy python3-nose
sudo pip3 install theano

Con estos sencillos pasos ya puedes empezar a usar Theano. ¿No sabes cómo usarlo? ¡Aquí tienes un gran tutorial para empezar!