2016-10-02 7 views
14

क्या केरा विभिन्न आकारों के साथ इनपुट छवियों के साथ सौदा कर सकता है? उदाहरण के लिए, पूरी तरह से संक्रामक तंत्रिका नेटवर्क में, इनपुट छवियों का कोई आकार हो सकता है। हालांकि, जब हम केरास द्वारा नेटवर्क बनाते हैं तो हमें इनपुट आकार निर्दिष्ट करने की आवश्यकता होती है। इसलिए, इनपुट आकार छवियों को आकार के आकार के बिना अलग इनपुट आकार से निपटने के लिए हम केरा का उपयोग कैसे कर सकते हैं? किसी भी मदद के लिए धन्यवाद।क्या केरा विभिन्न आकारों के साथ इनपुट छवियों के साथ सौदा कर सकता है?

उत्तर

9

समान कम्प्यूटेशनल कर्नेल के साथ मनमाने ढंग से आकार के इनपुट सरणी को कार्यान्वित करने से कई चुनौतियां हो सकती हैं - उदा। एक जीपीयू पर, आपको यह जानने की जरूरत है कि कितने बड़े बफर आरक्षित हैं, और आपके लूप को अनलॉक करने के लिए कितना कमजोर है, आदि। यह मुख्य कारण है कि केरा को निरंतर इनपुट आकार की आवश्यकता होती है, परिवर्तनीय आकार के इनपुट से निपटने के लिए बहुत दर्दनाक होता है।

एनएलपी में वाक्यों की तरह परिवर्तनीय-लंबाई अनुक्रमों को संसाधित करते समय यह आमतौर पर होता है। सामान्य दृष्टिकोण आकार (और फसल लंबे अनुक्रमों) पर ऊपरी बाउंड स्थापित करें, और उसके बाद पैड इस आकार तक शून्य के साथ अनुक्रम स्थापित करें।

(तुम भी शून्य मान पर मास्किंग, गद्देदार क्षेत्रों पर संगणना को छोड़ने के लिए, सिवाय इसके कि Keras में convolutional परतों अभी भी नकाबपोश आदानों का समर्थन नहीं कर सकते हैं ... शामिल हो सकते हैं)

मैं 3 डी के लिए करता है, तो यकीन नहीं है डेटा स्ट्रक्चर, पैडिंग का ओवरहेड निषिद्ध नहीं है - अगर आपको मेमोरी त्रुटियां मिलना शुरू हो जाता है, तो सबसे आसान काम बैच आकार को कम करना है। छवियों पर इस चाल को लागू करने के साथ अपने अनुभव के बारे में हमें बताएं!

16

हां। बस अपने इनपुट आकार को आकार में बदलें = (n_channels, कोई नहीं, कोई नहीं)। जहां n_channels आपकी इनपुट छवि में चैनलों की संख्या है।

मैं थेनो बैकएंड उपयोग कर रहा हूँ, हालांकि, इसलिए यदि आप उपयोग कर रहे हैं आप (कोई नहीं, कोई नहीं, n_channels)

आप का उपयोग करना चाहिए करने के लिए इसे बदलने के लिए हो सकता है tensorflow:

input_shape = (1, कोई नहीं, कोई नहीं)

किसी भी आकार में कोई भी एक चर आयाम इंगित करता है। ध्यान दें कि सभी परत ऐसे परिवर्तनीय आयामों के साथ काम नहीं करेंगे, क्योंकि कुछ परतों को आकार की जानकारी (जैसे फ़्लैटन) की आवश्यकता होती है। https://github.com/fchollet/keras/issues/1920

उदाहरण के लिए, keras के कार्यात्मक एपीआई का उपयोग कर अपने इनपुट परत होगा:

एक आरजीबी डाटासेट

inp = Input(shape=(3,None,None)) 

के लिए एक ग्रे डाटासेट के लिए

inp = Input(shape=(1,None,None)) 
+0

हाय Maz, मैं वास्तव में एक ही समस्या है। आपके सुझावों के मुताबिक, इसका मतलब है कि मैं प्रशिक्षण के लिए विभिन्न आकारों वाली छवियों का उपयोग कर सकता हूं, और इसी तरह, मैं अलग-अलग आकार वाले छवियों के लिए segmenations की भविष्यवाणी कर सकता हूं। – user288609

+0

ने कभी भी विभिन्न छवि आकारों के साथ प्रशिक्षण की कोशिश नहीं की, लेकिन आदर्श रूप से इसे काम करना चाहिए। भविष्यवाणी में, हालांकि, मैंने कोशिश की है और यह काम करता है (निश्चित रूप से ymmv)। सबसे खराब स्थिति परिदृश्य आपको एक ही आकार की छवियों के बैचों में खिलाना होगा। – maz

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