6

lasagne/nolearn を使用してオートエンコーダーをトレーニングしました。ネットワーク層が [500, 100, 100, 500] であるとします。私は次のようにニューラルネットを訓練しました:

net.fit(X, X)

次のようなことをしたい:

net.predict(X, layer=2)

そのため、データの抑制された表現を取得します。したがって、初期データの形状が [10000, 500] の場合、結果のデータは [10000, 100] になります。

検索しましたが、その方法を見つけることができませんでした。ラザニア/ノーラーンで可能ですか?

4

2 に答える 2

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)

lasagne.layers.InputLayerその場合、ネットワーク内のインスタンス (または複数のインスタンス) に関連付けられた入力変数の関数で出力を表す Theano 式が返され ます。

...

への 2 番目の引数として入力として使用する Theano 式を指定することもできますlasagne.layers.get_output()

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

netがタイプであると仮定するとnolearn.lasagne.NeuralNet、下にあるレイヤーオブジェクトにアクセスできるように見えますnet.get_all_layers()。ドキュメントには表示されませんが、592行目にあります。

于 2015-12-22T19:44:40.263 に答える
0

の代わりに、またはレイヤーに名前を付けた場合はnet.predict(X, layer=2)試してください。net.get_output(net.layers_[1], X)net.get_output('name_of_layer_2' , X)

于 2016-08-28T02:39:54.687 に答える