2015-11-20 10 views
6

मैंने लैसगेन/नोलेर्न का उपयोग करके एक ऑटोकोडर को प्रशिक्षित किया है। मान लें कि नेटवर्क परतें हैं [500, 100, 100, 500]। मैं तो जैसे तंत्रिका शुद्ध प्रशिक्षित किया है:Lasagne/Nolearn autoencoder - छुपा परत आउटपुट कैसे प्राप्त करें?

net.predict(X, layer=2) 

इसलिए मैं अपने डेटा की दबा प्रतिनिधित्व मिलेगा:

net.fit(X, X) 

मैं निम्नलिखित की तरह कुछ करना चाहते हैं। इसलिए, यदि मेरे प्रारंभिक डेटा का आकार [10000, 500] है, तो परिणामी डेटा [10000, 100] होगा।

मैंने खोज की लेकिन यह नहीं पता कि यह कैसे किया जा सकता है। क्या यह लैसगेन/नोलेर्न के साथ संभव है?

उत्तर

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 उदाहरण (या उदाहरण) नेटवर्क

में के साथ जुड़े ...

तुम भी एक थेनो निर्दिष्ट कर सकते हैं अभिव्यक्ति lasagne.layers.get_output() करने के लिए एक दूसरा तर्क के रूप में इनपुट के रूप में उपयोग करने के लिए:

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

मान लिया जाये कि net की तरह आप net.get_all_layers() साथ अंतर्निहित परत वस्तुओं के लिए उपयोग कर सकते हैं यह लग रहा है प्रकार nolearn.lasagne.NeuralNet की है। मैं दस्तावेज में इसे देख नहीं करते हैं लेकिन यह here लाइन 592.

+0

हाय ovolve। मैंने लैसगेन के शीर्ष पर नोलेर्न का उपयोग करके नेटवर्क को प्रशिक्षित किया है। मुझे नहीं लगता कि मैं उपरोक्त कोड का उपयोग करने में सक्षम हूं। कोड में 'नेट' ऑब्जेक्ट का उपयोग नहीं किया जाता है। क्या मुझे कुछ याद आती है? – Stergios

+0

@ स्टेरिजियो क्षमा करें, यह नहीं पता था कि परतें परतों को छुपाती हैं। मैंने जवाब अपडेट कर लिया है। नोट मैंने इस कोड का परीक्षण नहीं किया है। – ovolve

0
net.predict(X, layer=2) के बजाय

पर है, net.get_output(net.layers_[1], X), या net.get_output('name_of_layer_2' , X) कोशिश अगर आप अपने परत नाम दिया है।

संबंधित मुद्दे