python
import numpy as np
import theano
import theano.tensor as T
from pylearn2.models import mlp
x = T.matrix('x')
input_size = 10
hidden_size = 20
output_size = 2
hidden_layer = mlp.Sigmoid(
layer_name='hidden',
dim=hidden_size,
sparse_init=15,
irange=0.2
)
output_layer = mlp.Softmax(
n_classes=output_size,
layer_name='output'
)
mlp_model = mlp.MLP(
input=x,
layers=[hidden_layer, output_layer],
nvis=input_size
)
train_fn = theano.function(
inputs=[x],
outputs=mlp_model.fprop(x),
allow_input_downcast=True
)
input_data = np.random.rand(100, input_size).astype(np.float32)
train_fn(input_data)
yaml
!obj:pylearn2.train.Train {
dataset: &train !obj:pylearn2.datasets.dense_design_matrix.DenseDesignMatrix {
X: !!ndarray [
[0.0, 0.0, 1.0],
[1.0, 0.0, 1.0],
[0.0, 1.0, 1.0],
[1.0, 1.0, 1.0]
],
y: !!ndarray [
[0],
[1],
[1],
[0]
]
},
model: !obj:pylearn2.models.mlp.MLP {
layers: [
!obj:pylearn2.models.mlp.Sigmoid {
dim: 3,
layer_name: h0,
irange: 0.1,
sparse_init: 15
},
!obj:pylearn2.models.mlp.Softmax {
n_classes: 2,
layer_name: y,
irange: 0.1
}
],
nvis: 3
},
algorithm: !obj:pylearn2.training_algorithms.sgd.SGD {
learning_rate: 0.1,
batch_size: 1,
learning_rule: !obj:pylearn2.training_algorithms.learning_rule.Momentum {
learning_rate: 0.001,
momentum: 0.5,
},
termination_criterion: !obj:pylearn2.termination_criteria.EpochCounter {
max_epochs: 1000,
}
},
extensions: [
!obj:pylearn2.train_extensions.best_params.MonitorBasedSaveBest {
channel_name: valid_y_misclass,
save_path: best_model.pkl
}
]
}
python -m pylearn2.train config.yaml