2015-11-20 9 views
6

私はlasagne/nolearnを使ってオートエンコーダーを訓練しました。ネットワーク層が[500,100,100,500]であると仮定する。Lasagne/nolearn autoencoder - 隠れ層の出力を取得する方法?

net.predict(X, layer=2) 

ので、私は私のデータの抑制表現を取得します:私は、次のような何かをしたい

net.fit(X, X) 

:私はそうのようなニューラルネットを訓練してきました。したがって、私の初期データの形状が[10000、500]の場合、結果データは[10000、100]になります。

私は検索しましたが、それを行う方法が見つかりませんでした。 lasagne/nolearnで可能ですか?答えはドキュメントにここにあるよう

答えて

2

はルックス:ここ http://lasagne.readthedocs.org/en/latest/user/layers.html#propagating-data-through-layers

は、関連する部品です:

ネットワークの出力を計算するために、あなたの代わりにそれに lasagne.layers.get_output()を呼び出す必要があります。これはネットワーク グラフを横断します。あなたはあなたが 出力式を計算したい層で、この関数を呼び出すことができ

:その場合は

>>> y = lasagne.layers.get_output(l_out) 

、Theano式は、入力変数の関数で 出力を表している返されます

...ネットワーク

lasagne.layers.InputLayerインスタンス(またはインスタンス)に関連付けられているあなたもTheanoを指定することができますlasagne.layers.get_output()への2番目の引数として入力として使用する式:

>>> x = T.matrix('x') 
>>> y = lasagne.layers.get_output(l_out, x) 
>>> f = theano.function([x], y) 

netと仮定するとあなたはnet.get_all_layers()と、下地層のオブジェクトへのアクセスを得ることができるように見えるタイプnolearn.lasagne.NeuralNetです。私は、マニュアルでそれを見ることはありませんが、それは代わりにnet.predict(X, layer=2)

+0

こんにちは。私はラナグの上にnolearnを使ってネットワークを訓練しました。私は上記のコードを使用できるとは思わない。 'net'オブジェクトはコード内で使用されません。私は何かが恋しいですか? – Stergios

+0

@Stergios申し訳ありませんが、nolearnがレイヤーを非表示にしていることを認識していませんでした。私は答えを更新しました。注:私はこのコードをテストしていません。 – ovolve

0

ライン592上のhereだ、あなたはあなたの層を命名した場合net.get_output(net.layers_[1], X)、またはnet.get_output('name_of_layer_2' , X)を試してみてください。

関連する問題