चुनौतियों पर वापस जाएँ
आसान 0 हल किए गए 0% स्वीकृति

Xavier और He वेट इनिशियलाइज़ेशन

किसी लेयर के वेट शुरू करने के लिए इस्तेमाल होने वाली रेंज या मानक विचलन निकालें।

आप क्या सीखेंगे

  • लेयर के इनिशियलाइज़ेशन की सीमा निकालना
  • Xavier और He में से चुनना
  • समझना कि इनिशियलाइज़ेशन क्यों मायने रखता है

समस्या

बहुत बड़े या बहुत छोटे शुरुआती वेट से डीप नेटवर्क को ट्रेन करना मुश्किल हो जाता है। दो मानक तरीके लेयर के आकार से स्केल चुनते हैं, जहाँ fan_in इनपुट की संख्या और fan_out आउटपुट की संख्या है:

methodलौटाता है
"xavier_uniform"सीमा √(6 / (fan_in + fan_out)), वेट [-सीमा, सीमा] से लिए जाते हैं
"xavier_normal"मानक विचलन √(2 / (fan_in + fan_out))
"he_uniform"सीमा √(6 / fan_in)
"he_normal"मानक विचलन √(2 / fan_in)

Xavier (Glorot) sigmoid और tanh लेयर के लिए ठीक है; He, ReLU लेयर के लिए।

init_bound(method, fan_in, fan_out) लागू करें।

इनपुट

method: "xavier_uniform", "xavier_normal", "he_uniform" या "he_normal" में से एक।

fan_in, fan_out: लेयर के इनपुट और आउटपुट की संख्या।

आउटपुट

सीमा या मानक विचलन को दशमलव संख्या के रूप में लौटाएँ।

सीमाएँ

1 ≤ fan_in, fan_out ≤ 100,000

उदाहरण

उदाहरण 1
इनपुट:
fan_in = 3
method = "xavier_uniform"
fan_out = 3

अपेक्षित आउटपुट:
expected = 1.0
इनपुट:
long long fan_in = 3;
std::string method = "xavier_uniform";
long long fan_out = 3;

अपेक्षित आउटपुट:
double expected = 1.0;
इनपुट:
long fan_in = 3;
string method = "xavier_uniform";
long fan_out = 3;

अपेक्षित आउटपुट:
double expected = 1.0;

व्याख्या

√(6 / (3 + 3)) = √1 = 1, इसलिए वेट [-1, 1] से लिए जाते हैं।

उदाहरण 2
इनपुट:
fan_in = 50
method = "he_normal"
fan_out = 10

अपेक्षित आउटपुट:
expected = 0.2
इनपुट:
long long fan_in = 50;
std::string method = "he_normal";
long long fan_out = 10;

अपेक्षित आउटपुट:
double expected = 0.2;
इनपुट:
long fan_in = 50;
string method = "he_normal";
long fan_out = 10;

अपेक्षित आउटपुट:
double expected = 0.2;

व्याख्या

He केवल fan_in का इस्तेमाल करता है: √(2 / 50) = √0.04 = 0.2।

कैसे हल करें

पहले खुद कोशिश करें, फिर एक-एक करके संकेत खोलें।

संकेत 1

हर method सिर्फ layer sizes और इस बात पर depend करता है कि आपको bound चाहिए या spread.

संकेत 2

He methods के लिए सिर्फ fan_in use करें, और Xavier methods के लिए fan_in plus fan_out.

संकेत 3

Uniform और normal formulas को mix up न करें, क्योंकि एक limit देता है और दूसरा standard deviation.

अपेक्षित जटिलता

समय O(1), अतिरिक्त स्थान O(1)

संदर्भ

यह चुनौती CodeUtility के लिए अनुकूलित की गई है। ऊपर दिए गए स्टेटमेंट और सीमाओं का पालन करें।

दूसरों से सीखें

समुदाय समाधान

अभी तक कोई प्रकाशित समाधान नहीं। पहला साझा करने के लिए इस चुनौती को हल करें।