我已经使用 lasagne/nolearn 训练了一个自动编码器。假设网络层是 [500, 100, 100, 500]。我已经像这样训练了神经网络:
net.fit(X, X)
我想做如下的事情:
net.predict(X, layer=2)
所以我会得到我的数据的抑制表示。因此,如果我的初始数据的形状为 [10000, 500],则结果数据将为 [10000, 100]。
我搜索但找不到如何做到这一点。烤宽面条/nolearn可以吗?
我已经使用 lasagne/nolearn 训练了一个自动编码器。假设网络层是 [500, 100, 100, 500]。我已经像这样训练了神经网络:
net.fit(X, X)
我想做如下的事情:
net.predict(X, layer=2)
所以我会得到我的数据的抑制表示。因此,如果我的初始数据的形状为 [10000, 500],则结果数据将为 [10000, 100]。
我搜索但找不到如何做到这一点。烤宽面条/nolearn可以吗?
看起来答案在文档中: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 行。
而不是net.predict(X, layer=2)
,尝试net.get_output(net.layers_[1], X)
,或者net.get_output('name_of_layer_2' , X)
如果您已命名您的图层。