मैं एक समारोह compare_images(k, a, b)
कि दो 2 डी-सरणियों a
और b
scipy.optimize कार्यों पर बड़े चरणों को कैसे बल दें?
funcion अंदर तुलना है, मैं sigma=k
a
मेरे विचार करने के लिए इसके लिए आदेश में छवि a
सम करने के लिए मुझे कितना चाहिए अनुमान लगाने के लिए है के साथ एक gaussian_filter
लागू छवि के समान हो b
समस्या मेरी समारोह compare_images
केवल विभिन्न मूल्यों वापस आ जाएगी अगर k
भिन्नता 0.5
खत्म हो गया है है, और अगर मैं fmin(compare_images, init_guess, (a, b)
करना यह आम तौर पर init_guess
मूल्य के लिए अटक।
मेरा मानना है कि समस्या fmin
(और minimize
) बहुत छोटे कदम है, जो मेरे मामले में compare_images
के लिए ठीक उसी वापसी मान पुन: पेश है, और इसलिए विधि सोचता है कि यह पहले से ही कम से कम पाया के साथ शुरू हो जाता है। यह केवल दो बार कोशिश करेगा।
क्या fmin
या scipy
से कोई अन्य न्यूनतम कार्य करने के लिए कोई बड़ा तरीका नहीं है? या क्या मेरी ज़रूरत के लिए कोई उपयुक्त तरीका उपयुक्त है?
संपादित करें: मुझे एक अस्थायी समाधान मिला। सबसे पहले, जैसा कि अनुशंसित किया गया था, मैंने xtol=0.5
और fmin
पर तर्क के रूप में उच्च उपयोग किया। फिर भी, मुझे अभी भी कुछ समस्याएं थीं, और कुछ बार fmin
init_guess
वापस आ जाएगी। मैंने फिर एक साधारण लूप बनाया ताकि fmin == init_guess
, मैं एक और, यादृच्छिक init_guess
उत्पन्न करूंगा और इसे फिर से कोशिश करूंगा।
यह काफी धीमा है, लेकिन अब मुझे इसे चलाने के लिए मिला है। यह मेरे सभी डेटा के लिए इसे चलाने के लिए 20 घंटे या उससे अधिक समय लेगा, लेकिन मुझे इसे फिर से करने की आवश्यकता नहीं होगी।
वैसे भी, बेहतर अभी भी एक बेहतर समाधान खोजने में रुचि रखने वालों के लिए समस्या को समझाने के लिए:
- मैं 2 छवियाँ,
A
औरB
है, कुछ वैज्ञानिक डेटा युक्त। A
चर मूल्य के साथ कुछ डॉट्स की तरह लग रहा है (यह जिसमें प्रत्येक महत्वपूर्ण बिंदु का प्रतिनिधित्व करता है, जहां एक घटना हुई के एक मैट्रिक्स है और यह तीव्रता है)B
एक समतल हीटमैप तरह लग रहा है (यह घटनाओं की मनाया घनत्व है)B
ऐसा लगता है कि आपने कुछ अर्द्ध-यादृच्छिक शोर के साथA
पर एक गाऊशियन फ़िल्टर लगाया है।- हम
B
कोsigma
सेA
पर एक गाऊशियन फ़िल्टर लागू करके अनुमानित कर रहे हैं। यहsigma
दृश्यमान रूप से चुना गया था, लेकिन केवल छवियों के एक निश्चित वर्ग के लिए काम करता है। - मैं प्रत्येक छवि के लिए इष्टतम
sigma
प्राप्त करने का प्रयास कर रहा हूं, इसलिए बाद में मुझेsigma
के कुछ संबंध मिल सकते हैं और प्रत्येक छवि में ईवेंट की श्रेणी दिखाई देती है।
वैसे भी, मदद के लिए धन्यवाद!
तो तुम तो एक अलग न्यूनतम के लिए देख रहे हैं? –
शायद सबसे अच्छा तरीका नहीं है, लेकिन निश्चित रूप से सबसे आसान है अपने चर या कम से कम मूल्य के लिए एक रैखिक स्केलिंग लागू करें। Scipy अनुकूलन कार्यों में काफी कुछ हार्डकोडेड मान हैं। 'Xtol' के साथ बजाना भी मदद कर सकता है। – Daniel
ऐसा लगता है कि आपको छवि * ए * और छवि * बी * दोनों को समान बनाने के लिए चिकनी होनी चाहिए, जब तक * बी * पहले से ही चिकना नहीं हो जाता है। यदि ऐसा है, तो यह हो सकता है कि (आप दो छवियों के बीच समानता को मापने के तरीके के आधार पर) अकेले * ए * पर लागू किसी भी चिकनाई वास्तव में इसे * कम * के समान * बी * के समान बना देंगे। या, आप 'compar_images()' में एक अलग समानता माप का उपयोग करने का प्रयास कर सकते हैं ताकि यह समानता के लिए अलग-अलग मान लौटाए, भले ही 'के' में भिन्नता 0.5 से कम हो। यदि आप अपना कार्य 'compar_images() 'दिखाते हैं, तो लोगों के पास सुझाव हो सकते हैं? – Simon