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

डेंस लेयर का फ़ॉरवर्ड पास

अपनी पसंद के एक्टिवेशन के साथ एक पूरी तरह जुड़ी (fully connected) न्यूरॉन लेयर के आउटपुट निकालें।

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

  • न्यूरॉन की पूरी लेयर एक साथ निकालना
  • हर आउटपुट पर चुना हुआ एक्टिवेशन लगाना
  • वज़न को हर न्यूरॉन की एक पंक्ति के रूप में रखना

समस्या

डेंस लेयर न्यूरॉनों का ऐसा समूह है जिनमें सबको एक जैसे इनपुट मिलते हैं। न्यूरॉन j के अपने वेट weights[j] और अपना बायस biases[j] होता है:

z_j = inputs · weights[j] + biases[j]

फिर लेयर का एक्टिवेशन हर z_j पर लगाया जाता है:

  • "linear": z_j को बिना बदले लौटाएँ
  • "relu": max(0, z_j)
  • "sigmoid": 1 / (1 + e^(-z_j))

dense_forward(inputs, weights, biases, activation) लागू करें।

इनपुट

inputs: n इनपुट मान।

weights: हर न्यूरॉन के लिए एक पंक्ति; हर पंक्ति में n वेट।

biases: हर न्यूरॉन के लिए एक बायस।

activation: "linear", "relu" या "sigmoid"।

आउटपुट

हर न्यूरॉन का एक आउटपुट, क्रम से, सूची के रूप में लौटाएँ।

सीमाएँ

1 ≤ n ≤ 100, 1 ≤ न्यूरॉनों की संख्या ≤ 100

-10 ≤ हर मान ≤ 10

उदाहरण

उदाहरण 1
इनपुट:
biases = [0.0, -1.0]
inputs = [1.0, 2.0]
weights = [
    [0.5, -1.0],
    [1.5, 0.5]
]
activation = "relu"

अपेक्षित आउटपुट:
expected = [0.0, 1.5]
इनपुट:
std::vector<double> biases = {0.0, -1.0};
std::vector<double> inputs = {1.0, 2.0};
std::vector<std::vector<double>> weights = {
    {0.5, -1.0},
    {1.5, 0.5}
};
std::string activation = "relu";

अपेक्षित आउटपुट:
std::vector<double> expected = {0.0, 1.5};
इनपुट:
double[] biases = new double[] {0.0, -1.0};
double[] inputs = new double[] {1.0, 2.0};
double[][] weights = new double[][] {
    new double[] {0.5, -1.0},
    new double[] {1.5, 0.5}
};
string activation = "relu";

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

व्याख्या

न्यूरॉन 1: 1×0.5 + 2×(-1) + 0 = -1.5, और ReLU इसे 0 बना देता है। न्यूरॉन 2: 1×1.5 + 2×0.5 - 1 = 1.5, जिसे ReLU वैसा ही रखता है। परिणाम: [0, 1.5]।

उदाहरण 2
इनपुट:
biases = [1.0, 0.0, -1.5]
inputs = [3.0]
weights = [
    [2.0],
    [-1.0],
    [0.5]
]
activation = "linear"

अपेक्षित आउटपुट:
expected = [7.0, -3.0, 0.0]
इनपुट:
std::vector<double> biases = {1.0, 0.0, -1.5};
std::vector<double> inputs = {3.0};
std::vector<std::vector<double>> weights = {
    {2.0},
    {-1.0},
    {0.5}
};
std::string activation = "linear";

अपेक्षित आउटपुट:
std::vector<double> expected = {7.0, -3.0, 0.0};
इनपुट:
double[] biases = new double[] {1.0, 0.0, -1.5};
double[] inputs = new double[] {3.0};
double[][] weights = new double[][] {
    new double[] {2.0},
    new double[] {-1.0},
    new double[] {0.5}
};
string activation = "linear";

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

व्याख्या

linear एक्टिवेशन में आउटपुट बस 3×2 + 1 = 7, 3×(-1) + 0 = -3 और 3×0.5 - 1.5 = 0 हैं।

कैसे हल करें

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

संकेत 1

हर neuron को अलग से लें: हर एक की अपनी weight row और bias है.

संकेत 2

हर neuron का input vector के साथ dot product निकालें, bias जोड़ें, फिर चुनी हुई activation लगाएँ.

संकेत 3

ध्यान रखें activation linear step के बाद लागू हो, और output में neuron order वही रहे.

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

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

संदर्भ

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

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

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

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