टीएल.डीआरआर। क्या theano.tensor.nnet.neighbours.images2neibs
का 3-आयामी अनुकूल कार्यान्वयन है?थीनो में 3 डी स्लाइडिंग विंडो ऑपरेशन?
मैं एक न्यूरल नेटवर्क का उपयोग कर वॉल्यूम-वार वर्गीकरण (एनएक्सएनएक्सएन) का प्रदर्शन करना चाहता हूं जो एनएक्सएनएक्सएन छवि में लेता है, जहां एन> एन। वॉल्यूम में प्रत्येक वोक्सेल को वर्गीकृत करने के लिए, मुझे प्रत्येक वोक्सेल के माध्यम से फिर से शुरू करना होगा। प्रत्येक पुनरावृत्ति के लिए, मैं पड़ोस के voxels को तंत्रिका नेटवर्क में इनपुट के रूप में प्राप्त और पास करता हूं। यह बस एक स्लाइडिंग विंडो ऑपरेशन है, जो ऑपरेशन तंत्रिका नेटवर्क है।
जबकि मेरा तंत्रिका नेटवर्क थानो में लागू किया गया है, स्लाइडिंग विंडो कार्यान्वयन पायथन/numpy में है। चूंकि यह एक शुद्ध थानो ऑपरेशन नहीं है, वर्गीकरण एक ही मात्रा में सभी voxels वर्गीकृत करने के लिए हमेशा के लिए (> 3 घंटे) लेता है। 2 डी स्लाइडिंग विंडो ऑपरेशन के लिए, थानो में एक सहायक विधि है, theano.tensor.nnet.neighbours.images2neibs
, क्या 3-आयामी छवियों के लिए एक समान कार्यान्वयन है?
संपादित करें: मौजूदा numpy समाधान (1 और 2) एन-घ खिड़की फिसलने के लिए, दोनों का उपयोग 'रपट खिड़की के विचारों का' प्रदान करने के लिए np.lib.stride_tricks.as_strided, इस प्रकार स्मृति मुद्दों को रोकने। मेरे कार्यान्वयन में, स्लाइडिंग विंडो सरणी को numpy (Cython) से Python और फिर Theano तक पारित किया जा रहा है। प्रदर्शन को बढ़ावा देने के लिए, शायद मुझे पायथन को बाईपास करना होगा।
संबंधित चर्चा। https://github.com/Theano/Theano/issues/2166 – teng
वैकल्पिक रूप से, शायद आप 'sklearn.feature_extraction.image.extract_patches' को देखना चाहते हैं। यह आपको डेटा की एक प्रति बनाये बिना वांछित 'nxnxn' cubes पर एक दृश्य दे सकता है। इसे 'np.einsum' के साथ संयोजित करें जो प्रतिलिपि नहीं करता है और आपको कुछ ऐसा मिल सकता है जो स्वीकार्य समय में चलता है (कोई गारंटी नहीं, कभी कोशिश नहीं की गई) – eickenberg
धन्यवाद ईकनबर्ग। मुझे 'np.einsum' पर एक नज़र रखना होगा! – teng