Lasagne/nolearn autoencoder - 如何获取隐藏层输出?

Ste*_*ios 6 python neural-network autoencoder lasagne nolearn

我用lasagne/nolearn训练了一个自动编码器.假设网络层是[500,100,100,500].我像这样训练了神经网络:

net.fit(X, X)
Run Code Online (Sandbox Code Playgroud)

我想做类似以下的事情:

net.predict(X, layer=2)
Run Code Online (Sandbox Code Playgroud)

所以我会得到我的数据的抑制表示.因此,如果我的初始数据的形状为[10000,500],则结果数据将为[10000,100].

我搜索但无法找到如何做到这一点.是不是可以用千层面/ nolearn?

ovo*_*lve 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)
Run Code Online (Sandbox Code Playgroud)

lasagne.layers.InputLayer在这种情况下,将返回一个 Theano 表达式,该表达式表示与网络中的一个或多个实例关联的输入变量的函数输出

...

您还可以指定要用作输入的 Theano 表达式作为第二个参数lasagne.layers.get_output()

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

假设net是类型,nolearn.lasagne.NeuralNet看起来您可以使用 访问底层对象net.get_all_layers()。我在文档中没有看到它,但它位于第 592 行。