पर अधिकतम 20 पैरामीटर की सीमा क्यों है, क्लोजर फ़ंक्शन ले सकते पैरामीटर की संख्या की सीमा होने लगती है।क्लोजर फ़ंक्शन
जब 20 से अधिक मापदंडों के साथ एक समारोह को परिभाषित मैं इन्हें प्राप्त:
#<CompilerException java.lang.RuntimeException: java.lang.RuntimeException: java.lang.Exception: Can't specify more than 20 params (NO_SOURCE_FILE:0) (NO_SOURCE_FILE:0)>
जाहिर है इस से बचा जा सकता है, लेकिन मैं इस सीमा clojure के लिए एक मौजूदा डीएसएल के निष्पादन मॉडल पोर्टिंग मार गया था, और मैं निम्नलिखित है, जो मैक्रो विस्तार से इस सीमा को छोड़कर काफी आसानी से कार्यों के लिए मैप किया जा सकता की तरह मेरे डीएसएल में निर्माणों है:
(defAlias nn1 ((element ?e1) (element ?e2)) number
"@doc features of the elements are calculated for entry into
the first neural network, the result is the score computed by the latter"
(nn1-recall (nn1-feature00 ?e1 ?e2) (nn1-feature01 ?e1 ?e2) ... (nn1-feature89 ?e1 ?e2)))
जो एक डीएसएल बयान है के साथ एक तंत्रिका नेटवर्क कॉल करने के लिए 90 इनपुट नोड्स। बेशक इसके आसपास काम कर सकते हैं, लेकिन यह सोच रहा था कि सीमा कहां से आती है। धन्यवाद।
शैली पर एक ब्याज नोट के रूप में: स्टीव मैककनेल का "कोड पूर्ण" वकालत, आंशिक रूप से प्रोग्रामिंग दक्षता अध्ययनों पर आधारित है, कि एक विधि में 7 से अधिक तर्क नहीं होना चाहिए, और हाल ही में रॉबर्ट सी मार्टिन का "स्वच्छ कोड" सीमा को 3 के रूप में सेट करता है। मुझे 7 इंटरफेस को फिर से इंजीनियर करने का निर्णय लेने के लिए अंगूठे का एक अच्छा नियम मिला है, जबकि 3 थोड़ा चरम लगता है। हां, मैं मैक्रो और सभी के साथ आपकी विशेष परिस्थितियों से अवगत हूं; बस "सामान्य" मामले के लिए इंगित करते हुए, 20 काफी उदार है। –
अपने न्यूरॉन्स को सरणी या कुछ के साथ बनाएं और उन्हें फ़ंक्शन में seqs के रूप में फ़ीड करें। और नक्शा-seqs को कम करें? कुछ इस तरह? http://www.fatvat.co.uk/2009/06/back-propagation-algorithm-in-clojure.html – claj