समस्या
बहुत बड़े या बहुत छोटे शुरुआती वेट से डीप नेटवर्क को ट्रेन करना मुश्किल हो जाता है। दो मानक तरीके लेयर के आकार से स्केल चुनते हैं, जहाँ 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
उदाहरण
इनपुट:
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] से लिए जाते हैं।
इनपुट:
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 के लिए अनुकूलित की गई है। ऊपर दिए गए स्टेटमेंट और सीमाओं का पालन करें।