In [1]:
import theano
from pylearn2.models import mlp
from pylearn2.train_extensions import best_params
from pylearn2.training_algorithms import sgd, learning_rule
from pylearn2.utils import serial
from pylearn2.termination_criteria import MonitorBased
from pylearn2.datasets.dense_design_matrix import DenseDesignMatrix
from sklearn.preprocessing import StandardScaler
from pylearn2.termination_criteria import EpochCounter
import numpy as np
from random import randint
import itertools
import os

In [2]:
n = 200
p = 2
X = np.random.normal(0, 1, (n, p))
y = X[:,0]* X[:, 1] + np.random.normal(0, .1, n)
y.shape = (n, 1)

ds = DenseDesignMatrix(X=X, y=y)


hidden_layer = mlp.Sigmoid(layer_name='hidden', dim=10, irange=.1, init_bias=1.)
output_layer = mlp.Linear(dim=1, layer_name='y', irange=.1)
trainer = sgd.SGD(learning_rate=.05, batch_size=10, 
                  termination_criterion=EpochCounter(10))
layers = [hidden_layer, output_layer]
ann = mlp.MLP(layers, nvis=2)
trainer.setup(ann, ds)

while True:
    trainer.train(dataset=ds)
    ann.monitor.report_epoch()
    ann.monitor()
    if not trainer.continue_learning(ann):
        break

inputs = X 
y_est = ann.fprop(theano.shared(inputs, name='inputs')).eval()


Parameter and initial learning rate summary:
	hidden_W: 0.05
	hidden_b: 0.05
	y_W: 0.05
	y_b: 0.05
Compiling sgd_update...
Compiling sgd_update done. Time elapsed: 1.110401 seconds
compiling begin_record_entry...
compiling begin_record_entry done. Time elapsed: 0.023136 seconds
Monitored channels: 
Compiling accum...
Compiling accum done. Time elapsed: 0.000758 seconds
Monitoring step:
	Epochs seen: 1
	Batches seen: 20
	Examples seen: 200
Monitoring step:
	Epochs seen: 2
	Batches seen: 40
	Examples seen: 400
Monitoring step:
	Epochs seen: 3
	Batches seen: 60
	Examples seen: 600
Monitoring step:
	Epochs seen: 4
	Batches seen: 80
	Examples seen: 800
Monitoring step:
	Epochs seen: 5
	Batches seen: 100
	Examples seen: 1000
Monitoring step:
	Epochs seen: 6
	Batches seen: 120
	Examples seen: 1200
Monitoring step:
	Epochs seen: 7
	Batches seen: 140
	Examples seen: 1400
Monitoring step:
	Epochs seen: 8
	Batches seen: 160
	Examples seen: 1600
Monitoring step:
	Epochs seen: 9
	Batches seen: 180
	Examples seen: 1800
Monitoring step:
	Epochs seen: 10
	Batches seen: 200
	Examples seen: 2000
Monitoring step:
	Epochs seen: 11
	Batches seen: 220
	Examples seen: 2200

In [3]:
print X.shape
print y.shape
print y[0]


(200, 2)
(200, 1)
[-3.12277756]