1

以下の YAML ファイルを (pylearn2/scripts/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」関数を使用して、モデルの出力を予測することもできます。

しかし、この事前トレーニング済みモデルを教師あり学習に使用したくなくて、新しく学習したデータの表現をオートエンコーダーで保存したい場合はどうすればよいでしょうか。

これどうやってするの?

さらに詳しい質問はこちら

4

2 に答える 2

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)
于 2015-07-22T00:14:25.513 に答える
0

ピクルスモデルのreconstructやり方でやればいいのですが、使い方は と同じだと思いますfprop

于 2014-09-23T14:09:31.240 に答える