6

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

net.fit(X, X)

我想做如下的事情:

net.predict(X, layer=2)

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

我搜索但找不到如何做到这一点。烤宽面条/nolearn可以吗?

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)

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

...

你也可以指定一个 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 回答