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

एक्टिवेशन फ़ंक्शन के डेरिवेटिव

हर मान पर sigmoid, ReLU, Leaky ReLU या tanh का डेरिवेटिव निकालें, यानी वे ढलान जिनकी बैकप्रोपेगेशन को ज़रूरत होती है।

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

  • आम एक्टिवेशन के ढलान निकालना
  • डेरिवेटिव के लिए सिग्मॉइड आउटपुट दोबारा उपयोग करना
  • बैकप्रोपेगेशन के लिए ज़रूरी हिस्से तैयार करना

समस्या

बैकप्रोपेगेशन ग्रेडिएंट को हर एक्टिवेशन फ़ंक्शन के डेरिवेटिव से गुणा करता है। activation_derivative(name, values) लागू करें और हर मान पर डेरिवेटिव लौटाएँ:

nameडेरिवेटिव
"sigmoid"s × (1 - s), जहाँ s = 1 / (1 + e^(-x))
"relu"1 अगर x > 0, नहीं तो 0
"leaky_relu"1 अगर x > 0, नहीं तो 0.01
"tanh"1 - tanh(x)²

इनपुट

name: "sigmoid", "relu", "leaky_relu" या "tanh" में से एक।

values: एक्टिवेशन के इनपुट x।

आउटपुट

उसी क्रम में हर मान पर डेरिवेटिव लौटाएँ।

सीमाएँ

1 ≤ लंबाई ≤ 1,000

-50 ≤ हर मान ≤ 50

उदाहरण

उदाहरण 1
इनपुट:
name = "sigmoid"
values = [0.0, 2.0]

अपेक्षित आउटपुट:
expected = [0.25, 0.104994]
इनपुट:
std::string name = "sigmoid";
std::vector<double> values = {0.0, 2.0};

अपेक्षित आउटपुट:
std::vector<double> expected = {0.25, 0.104994};
इनपुट:
string name = "sigmoid";
double[] values = new double[] {0.0, 2.0};

अपेक्षित आउटपुट:
double[] expected = new double[] {0.25, 0.104994};

व्याख्या

0 पर s = 0.5 है और ढलान 0.5 × 0.5 = 0.25 है, जो sigmoid का सबसे खड़ा बिंदु है। 2 पर s ≈ 0.880797 है और ढलान लगभग 0.104994 है।

उदाहरण 2
इनपुट:
name = "relu"
values = [-3.0, 0.0, 4.5]

अपेक्षित आउटपुट:
expected = [0.0, 0.0, 1.0]
इनपुट:
std::string name = "relu";
std::vector<double> values = {-3.0, 0.0, 4.5};

अपेक्षित आउटपुट:
std::vector<double> expected = {0.0, 0.0, 1.0};
इनपुट:
string name = "relu";
double[] values = new double[] {-3.0, 0.0, 4.5};

अपेक्षित आउटपुट:
double[] expected = new double[] {0.0, 0.0, 1.0};

व्याख्या

ReLU x ≤ 0 के लिए सपाट है (ढलान 0) और x > 0 के लिए ढलान 1 है, इसलिए परिणाम [0, 0, 1] है।

कैसे हल करें

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

संकेत 1

Derivative activation type पर depend करता है, इसलिए हर input value के लिए हर function को अलग handle करें.

संकेत 2

Sigmoid और tanh के लिए, फिर से scratch से complicated तरीके से compute करने की बजाय activation output या उसका standard function value reuse करें.

संकेत 3

Sign thresholds का ध्यान रखें: ReLU strict positive test use करता है, जबकि leaky ReLU nonpositive values के लिए small slope रखता है.

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

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

संदर्भ

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

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

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

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