2015-12-24 24 views
5

में फ़िल्टर विज़ुअलाइज़ेशन के लिए थेनो अभिव्यक्ति से ग्रेडियेंट एक कॉन्वनेट के लिए मानक-बाध्य इनपुट ढूंढना दिलचस्प हो सकता है जो एक एकल रूपांतरण की गतिविधि को अधिकतम करता है। visualize the filters के रूप में फ़िल्टर करें। मैं इसे गहरी सीखने के पैकेज केरास में करना चाहता हूं। यह FAQ से कोड के साथ एक ब्लैक बॉक्स ऑप्टिमाइज़ेशन एल्गोरिदम का उपयोग करके किया जा सकता है।केरास

# with a Sequential model 
get_3rd_layer_output = theano.function([model.layers[0].input], 
             model.layers[3].get_output(train=False)) 
layer_output = get_3rd_layer_output(X) 

हालांकि, अगर मैं ढाल था तो यह काफी आसान अनुकूलन कार्य होगा। मैं थैनो अभिव्यक्ति से ढाल को कैसे निकाला जा सकता हूं और उसे सिसिसी जैसे पायथन ऑप्टिमाइज़ेशन लाइब्रेरी में इनपुट कर सकता हूं?

उत्तर

2

आप here वर्णित ढाल को प्रिंट कर सकते हैं और इसे Scipy में हैंड कोड कर सकते हैं। आप थेनो में अनुकूलन भी कर सकते हैं - this question देखें।

हालांकि, शायद सबसे सीधी-सपाट दृष्टिकोण एक समारोह get_gradients()theano.grad() का उपयोग करता है, एक इनपुट के संबंध में फिल्टर के ढ़ाल वापस जाने के लिए तो jac=get_gradients साथ scipy.optimize.minimize फोन बनाने के लिए है। documentation के अनुसार:

jac: bool या प्रतिदेय, उद्देश्य समारोह के वैकल्पिक Jacobian (ढाल)। [...] जेएसी भी उद्देश्य के ढाल को वापस करने योग्य कॉल करने योग्य हो सकता है। इस मामले में, इसे एक ही तर्क को मजेदार के रूप में स्वीकार करना होगा।

+0

धन्यवाद। मैं 'theano.grad()' के पीछे मूल विचार को समझता हूं, लेकिन मैं केरास मॉडल के नुकसान के संबंध में ग्रेडियेंट कैसे निकालूं? Https://github.com/fchollet/keras/blob/master/examples/conv_filter_visualization.py के आधार पर मैंने देखा है कि कुछ इनपुट 'X_train' का उपयोग करके यह कैसे किया जा सकता है, लेकिन मुझे नहीं पता कि यह कैसे करना है हानि। मेरे दो मुद्दे हैं 1) मैं नेटवर्क से जुड़े नुकसान समारोह को निकालने के लिए प्रतीत नहीं कर सकता 2) इस नए फ़ंक्शन को 'X_train' और 'y_train' दोनों की आवश्यकता है, जिसे मैं सही तरीके से प्रदान नहीं कर सकता। – pir

+0

बैरप्रोपैगेशन के दौरान, प्रत्येक परत के संबंध में केरा पहले से ही हानि के ग्रेडियेंट की गणना करता है। लेकिन क्या आप इनपुट के संबंध में मध्यवर्ती परत के ग्रेडियंट नहीं चाहते हैं? –

+0

आह, हाँ। क्षमा करें, यह कुछ समय हो गया है जब से मैंने सवाल पूछा था। आपका जवाब हल करता है। मेरा वर्तमान मुद्दा यह है कि सभी पैरामीटर wrt में gradients निकालने के लिए कैसे। नुकसान के रूप में मैं ढाल क्लिपिंग की आवश्यकता की जांच करना चाहता हूँ। क्या केरस में लागू बैकप्रॉप साबित होना आसान है? – pir

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