समस्या
एक कृत्रिम न्यूरॉन हर इनपुट को एक वेट से गुणा करता है, बायस जोड़ता है और परिणाम को एक्टिवेशन फ़ंक्शन से गुज़ारता है:
z = x₁×w₁ + x₂×w₂ + … + xₙ×wₙ + bias
आउटपुट = sigmoid(z) = 1 / (1 + e^(-z))
neuron_output(inputs, weights, bias) लागू करें।
इनपुट
inputs: इनपुट मान।
weights: हर इनपुट के लिए एक वेट (inputs जितनी ही लंबाई)।
bias: न्यूरॉन का बायस।
आउटपुट
न्यूरॉन का आउटपुट लौटाएँ, 0 और 1 के बीच की एक दशमलव संख्या।
सीमाएँ
1 ≤ inputs की लंबाई = weights की लंबाई ≤ 100
-10 ≤ हर इनपुट, वेट और बायस ≤ 10
उदाहरण
इनपुट:
bias = 0.5
inputs = [1.0, 2.0, 3.0]
weights = [0.2, 0.4, 0.6]
अपेक्षित आउटपुट:
expected = 0.964429
इनपुट:
double bias = 0.5;
std::vector<double> inputs = {1.0, 2.0, 3.0};
std::vector<double> weights = {0.2, 0.4, 0.6};
अपेक्षित आउटपुट:
double expected = 0.964429;
इनपुट:
double bias = 0.5;
double[] inputs = new double[] {1.0, 2.0, 3.0};
double[] weights = new double[] {0.2, 0.4, 0.6};
अपेक्षित आउटपुट:
double expected = 0.964429;
व्याख्या
z = 1×0.2 + 2×0.4 + 3×0.6 + 0.5 = 3.3, और sigmoid(3.3) ≈ 0.964429।
इनपुट:
bias = 0.0
inputs = [0.5, -1.0]
weights = [2.0, 1.0]
अपेक्षित आउटपुट:
expected = 0.5
इनपुट:
double bias = 0.0;
std::vector<double> inputs = {0.5, -1.0};
std::vector<double> weights = {2.0, 1.0};
अपेक्षित आउटपुट:
double expected = 0.5;
इनपुट:
double bias = 0.0;
double[] inputs = new double[] {0.5, -1.0};
double[] weights = new double[] {2.0, 1.0};
अपेक्षित आउटपुट:
double expected = 0.5;
व्याख्या
z = 0.5×2 + (-1)×1 + 0 = 0, और sigmoid(0) = 0.5: न्यूरॉन ठीक बीच में है, कोई निर्णय नहीं ले पा रहा।
कैसे हल करें
पहले खुद कोशिश करें, फिर एक-एक करके संकेत खोलें।
संकेत 1
यह बस inputs का weighted sum है, उसमें bias जोड़कर अंत में sigmoid लगानी है.
संकेत 2
हर input को उसके corresponding weight से pair करें और bias जोड़ने से पहले products को accumulate करें.
संकेत 3
ध्यान रहे final output raw sum नहीं, sigmoid से होकर जाना चाहिए.
अपेक्षित जटिलता
समय O(n), अतिरिक्त स्थान O(1)
संदर्भ
यह चुनौती CodeUtility के लिए अनुकूलित की गई है। ऊपर दिए गए स्टेटमेंट और सीमाओं का पालन करें।