2014-09-21 11 views
1

Мы можем обучить автоассоциатор в pylearn2 используя ниже YAML файл (вместе с pylearn2/скриптами/train.py)Получения заученного представления данных от неконтролируемого обучения в pylearn2

!obj:pylearn2.train.Train { 
    dataset: &train !obj:pylearn2.datasets.mnist.MNIST { 
     which_set: 'train', 
     start: 0, 
     stop: 50000 
    }, 
    model: !obj:pylearn2.models.autoencoder.DenoisingAutoencoder { 
     nvis : 784, 
     nhid : 500, 
     irange : 0.05, 
     corruptor: !obj:pylearn2.corruption.BinomialCorruptor { 
      corruption_level: .2, 
     }, 
     act_enc: "tanh", 
     act_dec: null, # Linear activation on the decoder side. 
    }, 
    algorithm: !obj:pylearn2.training_algorithms.sgd.SGD { 
     learning_rate : 1e-3, 
     batch_size : 100, 
     monitoring_batches : 5, 
     monitoring_dataset : *train, 
     cost : !obj:pylearn2.costs.autoencoder.MeanSquaredReconstructionError {}, 
     termination_criterion : !obj:pylearn2.termination_criteria.EpochCounter { 
      max_epochs: 10, 
     }, 
    }, 
    save_path: "./dae_l1.pkl", 
    save_freq: 1 
} 

Что мы получаем это изучили модель автокодера как «dae_l1.pkl».

Если я хочу использовать эту модель для контролируемого обучения, я могу использовать «dae_l1.pkl» для инициализации слоя MLP. Затем я смогу обучить эту модель. Я могу даже предсказать выход модели с помощью функции «fprop».

Но что, если я хочу использовать эту предварительно подготовленную модель для контролируемого обучения, и я просто хочу сохранить новое научное представление моих данных с помощью autoencoder.

Как я могу это сделать?

Еще более подробный вопрос ставится here

ответ

0

reconstruct метод из квашеной модели должен это делать - Я считаю, что использование такой же, как fprop.

0

Я думаю, вы можете использовать функции кодирования и декодирования автокодера, чтобы получить скрытое представление. Например:

l1_path = 'dae_l1.pkl' 
l1 = serial.load(l1_path) 
"""encode""" 
#layer 1 
l1Input = l1.get_input_space().make_theano_batch() 
l1Encode = l1.encode(l1Input) 
l1Decode = l1.decode(l1Encode) 
l1EncodeFunction = theano.function([l1Input], l1Encode) 
l1DecodeFunction = theano.function([l1Encode], l1Decode) 

Тогда представление будет:

l1encode = l1EncodeFunction(YourData)