सीएनएन मॉडल में अधिक परतों का उपयोग करते समय मेमोरी त्रुटि


7

मेरे dell core i7 - 16GB RAM - 4gb 960m GPU लैपटॉप पर, मैं 3D CNN का उपयोग करके फेफड़े के CT इमेज को वर्गीकृत करने के लिए एक प्रोजेक्ट पर काम कर रहा हूं। मैं टेंसरफ़्लो के सीपीयू संस्करण का उपयोग कर रहा हूँ। चित्र सुस्पष्ट सरणी आकार (25,50,50) के रूप में तैयार किए गए हैं।

मेरे CNN मॉडल में 2 सँकरी परतें, दो अधिकतम परत, एक FC परत और आउटपुट परत थी। इस वास्तुकला के साथ मैं लगभग (5000 से 6000) नमूनों के साथ मॉडल को प्रशिक्षित कर सकता था। अधिक परतों को जोड़ने के बाद मेरे मॉडल में अब 6 कन्टेस्ट लेयर, 3 अधिकतम-पूल लेयर्स, FC और आउटपुट लेयर हैं। मेरी समस्या केवल 1000 से अधिक नमूनों के साथ आर्किटेक्चर को बदलने के बाद मेरी मेमोरी भर जाती है और मुझे मेमोरी त्रुटि मिलती है। मैंने छोटे बैच बनाने की कोशिश की, लेकिन हर बार एक ही त्रुटि हो रही थी। मेरे दो सवाल हैं:

  1. अधिक परतों को जोड़कर मॉडल को अधिक मेमोरी की आवश्यकता क्यों है?

  2. क्या इस प्रकार की समस्या से निपटने का कोई तरीका है?


यह शायद इसलिए है क्योंकि आप बहुत सारे पैरामीटर्स हैं और डिफ़ॉल्ट रूप से आपके GPU का उपयोग कम्प्यूटेशंस के लिए किया जा रहा है और 4gb फिट नहीं हो सकता है ..
Aditya

मैं तनुप्रवाह के CPU संस्करण का उपयोग नहीं GPU
हुनर A.Ahmed

जवाबों:


4
  1. अधिक परतें आपके नेटवर्क के लिए अधिक मापदंडों का मतलब हैं, जो बदले में उन मापदंडों को संग्रहीत करने के लिए स्मृति में अधिक आवश्यक स्थान का मतलब है।

  2. एकमात्र समाधान (आपके कंप्यूटर की मेमोरी बढ़ाने के अलावा) आपके नेटवर्क के आकार को कम कर रहा है। इस पर कुछ संकेत: सबसे पहले, 3-डी सीएनएन को 2-डी वाले की तुलना में बहुत अधिक स्थान की आवश्यकता होती है। एक विचार 2-डी एक में स्थानांतरित करने के लिए हो सकता है। इसके अलावा, सबसे मापदंडों वाली परतें एफसी वाले हैं। ये कभी-कभी बेमानी हो जाते हैं। मैं पहले उन लोगों के आकार को कम करने का सुझाव दूंगा।


मुझे लगता है कि 3 डी सीएनएन 2 डी से बेहतर सटीकता दे रहा है, इसके लिए मैंने 3 डी सीएनएन का इस्तेमाल किया। मेरे FC लेयर में नोड्स की संख्या 1024 है, क्या आपका मतलब है कि कम करना? क्या यह सटीकता को प्रभावित नहीं करता है?
हुनर ए। अहमद

1
आपके FC लेयर में न्यूरॉन्स (या आउटपुट) की संख्या । यदि हम कहते हैं कि इसके इनपुट , तो मापदंडों की कुल संख्या या लगभग मिलियन पैरामीटर होगी। यह एक परत के लिए बड़ी संख्या में पैरामीटर है। एक अन्य उदाहरण के लिए आप वीजीजी 19 आर्किटेक्चर को देख सकते हैं, जिसमें पैरामीटर हैं, जिनमें से एक एफसी लेयर के हैं। 1024204820481024+10242.1140m100m
एमजेडआर

4

द्वारा किए गए बिंदु में जोड़कर MzdR, आप इसके बजाय जनरेटर का उपयोग करने का भी प्रयास कर सकते हैं। जैसा कि आप मॉडल हैं वास्तव में प्रशिक्षण के दौरान आपकी सभी छवियों को स्मृति में रखने की आवश्यकता नहीं होगी, मुझे लगता है कि एक जनरेटर को अच्छी तरह से सेवा करनी चाहिए।

चेक इस stackoverflow से सवाल बाहर। जब आप मेमोरी बारगेन पर होते हैं तो जेनरेटर बहुत अच्छे होते हैं। लेकिन अगर यह भी विफल रहता है, तो अपने FC परतों के आकार को कम करने का प्रयास करें।


मुझे लगता है कि जनरेटर मेरे मामले के लिए एक दिलचस्प विचार है और मैं इसे आज़माऊंगा, लेकिन मेरी समस्या यह है कि मुझे जनरेटर के बारे में अच्छी जानकारी नहीं है क्युकी मैं अजगर में नया हूँ।
हुनर ए। अहमद

करस में जनरेटर का उपयोग करने पर इस माध्यम पोस्ट के माध्यम से जाओ । यह आपको एक विचार प्राप्त करने में मदद कर सकता है
गेविन

यह केरस में बहुत आसान है, लेकिन मेरा कोड कच्चे टेंसरफ़्लो में लिखा गया है और मैं इसे केरस में नहीं बदल सकता।
हुनर ए। अहमद

से इस सवाल stackoverflow के लिए यकीन है कि मदद मिलेगी
गेविन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.