我已经使用千层面/nolean训练了一个自动编码器。假设网络层是[5001000500]。我这样训练神经网络:
net.fit(X, X)
我想做以下事情:
net.predict(X, layer=2)
所以我会得到数据的抑制表示。因此,如果我的初始数据有一个形状[100000],那么得到的数据将是[10000100]。
我搜索了一下,但找不到怎么做。千层面/意大利面有可能吗?
文档中似乎有答案:http://lasagne.readthedocs.org/en/latest/user/layers.html#propagating-数据通过层
以下是相关部分:
要计算网络的输出,您应该调用
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.get_output(net.layers_[1], X)
或net.get_output('name_of_layer_2' , X)
,而不是net.predict(X, layer=2)
。