我们可以使用下面的YAML文件(以及pylearn2 /scripts/train.py.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‘函数来预测模型的输出。
但是,如果我不想使用这个预先训练的模型进行监督学习,而我只想用自动编码器保存我的数据的新学习表示,该怎么办?
我该怎么做呢?
更详细的问题是here
发布于 2014-09-23 22:09:31
酸洗模型的reconstruct方法应该可以做到这一点--我相信用法与fprop相同。
发布于 2015-07-22 08:14:26
我认为你可以使用自动编码器的编码和解码功能来获得隐藏的表示。例如:
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)https://stackoverflow.com/questions/25962554
复制相似问题