आसान 0 हल किए गए 0% स्वीकृति

Softmax Function

Turn raw scores into probabilities that add up to 1, without overflowing on large values.

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

  • Turn scores into probabilities
  • Subtract the maximum to avoid overflow
  • Make outputs sum to 1

समस्या

अनुवाद दिखाएँ

The softmax function turns a list of scores (logits) into probabilities. Language models use it to choose the next word:

softmax(x)_i = e^(x_i) / (e^(x_1) + e^(x_2) + … + e^(x_n))

Large scores make e^x overflow, so first subtract the largest score from every score. The result is mathematically the same.

Implement softmax(logits).

Input

logits: A list of scores.

Output

Return the list of probabilities, in the same order. They are all between 0 and 1 and add up to 1.

सीमाएँ

1 ≤ length ≤ 1,000

-1,000 ≤ each score ≤ 1,000

उदाहरण

उदाहरण 1
इनपुट:
logits = [1.0, 2.0, 3.0]

अपेक्षित आउटपुट:
expected = [0.090031, 0.244728, 0.665241]
इनपुट:
std::vector<double> logits = {1.0, 2.0, 3.0};

अपेक्षित आउटपुट:
std::vector<double> expected = {0.090031, 0.244728, 0.665241};
इनपुट:
double[] logits = new double[] {1.0, 2.0, 3.0};

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

व्याख्या

e¹ ≈ 2.718, e² ≈ 7.389 and e³ ≈ 20.086 add up to 30.193, so the probabilities are about [0.090031, 0.244728, 0.665241].

उदाहरण 2
इनपुट:
logits = [1000.0, 1000.0]

अपेक्षित आउटपुट:
expected = [0.5, 0.5]
इनपुट:
std::vector<double> logits = {1000.0, 1000.0};

अपेक्षित आउटपुट:
std::vector<double> expected = {0.5, 0.5};
इनपुट:
double[] logits = new double[] {1000.0, 1000.0};

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

व्याख्या

Computing e^1000 directly overflows. Subtracting the maximum gives [0, 0], and e⁰ / (e⁰ + e⁰) = 0.5 for both.

संदर्भ

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

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

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

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