Добавление регуляризации L2 к тренеру SGD в MLP от pylearn2/Theano
Я новичок в Pylearn, так что этот вопрос может быть довольно простым. Я хочу добавить регуляризацию L2 к инструктору SGD для MLP, но я не уверен, как это сделать. Вот мой код (который не работает):
from pylearn2.datasets import DenseDesignMatrix
from pylearn2.models import mlp
from pylearn2.training_algorithms import sgd
from pylearn2.termination_criteria import EpochCounter
import theano
from pylearn2.costs import mlp as mlp_costs
c = mlp_costs.WeightDecay({'hidden':0.1, 'output':0.1})
# skipping the data reading part
ds = XOR()
hidden_layer = mlp.Sigmoid(layer_name='hidden', dim=2, irange=.1, init_bias=1.)
output_layer = mlp.Softmax(2, 'output', irange=.1)
trainer = sgd.SGD(learning_rate=.05, cost=c, batch_size=10, termination_criterion=EpochCounter(400))
layers = [hidden_layer, output_layer]
ann = mlp.MLP(layers, nvis=2)
trainer.setup(ann, ds)
ПРИМЕЧАНИЕ: я пропустил часть чтения данных - предполагается, что это не влияет на вопрос. Вот как я запускаю mlp:
while True:
trainer.train(dataset=ds)
ann.monitor.report_epoch()
ann.monitor()
if not trainer.continue_learning(ann):
break
Это ошибка, которую я вижу:
Traceback (most recent call last):
File "pylearn_test.py", line 52, in <module>
run_ann()
File "pylearn_test.py", line 38, in run_ann
trainer.train(dataset=ds)
File "/root/pylearn2/pylearn2/training_algorithms/sgd.py", line 442, in train
"data_specs: %s" % str(data_specs))
NotImplementedError: Unable to train with SGD, because the cost does not actually use data from the data set. data_specs: (NullSpace, '')
Я не уверен, как включить стоимость L2 в регуляризацию? Может кто-нибудь, пожалуйста, помогите?