सभी चुनौतियाँ
आसान 0 हल किए गए 0% स्वीकृति

कैटेगोरिकल क्रॉस-एंट्रॉपी लॉस

अनुमानित प्रायिकताओं और सही क्लास से मल्टी-क्लास क्लासिफ़ायर का लॉस मापें।

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

  • अनुमानित प्रायिकताओं को असली क्लास से आँकना
  • सैंपल पर लॉस का औसत लेना
  • मान सीमित करके log(0) से बचना

समस्या

मल्टी-क्लास क्लासिफ़ायर हर क्लास के लिए एक प्रायिकता देता है (जैसे सॉफ्टमैक्स से)। कैटेगोरिकल क्रॉस-एंट्रॉपी उसे तब दंडित करती है जब वह सही क्लास को कम प्रायिकता देता है:

loss = -(ln(p₁) + ln(p₂) + … + ln(pₙ)) / n

जहाँ pᵢ वह प्रायिकता है जो मॉडल ने सैंपल i की सही क्लास को दी। ln(0) से बचने के लिए पहले 0.0000001 से कम हर प्रायिकता को 0.0000001 तक बढ़ा दें।

categorical_cross_entropy(probabilities, labels) लागू करें।

इनपुट

probabilities: हर सैंपल के लिए एक पंक्ति, हर क्लास की एक प्रायिकता के साथ।

labels: हर सैंपल की सही क्लास का इंडेक्स (0 से शुरू)।

आउटपुट

औसत लॉस को दशमलव संख्या के रूप में लौटाएँ।

सीमाएँ

1 ≤ सैंपल ≤ 1,000, 2 ≤ क्लास ≤ 100

0 ≤ हर प्रायिकता ≤ 1

0 ≤ labels[i] < क्लास की संख्या

उदाहरण

उदाहरण 1
इनपुट:
labels = [0, 1]
probabilities = [
    [0.7, 0.2, 0.1],
    [0.1, 0.8, 0.1]
]

अपेक्षित आउटपुट:
expected = 0.289909
इनपुट:
std::vector<long long> labels = {0, 1};
std::vector<std::vector<double>> probabilities = {
    {0.7, 0.2, 0.1},
    {0.1, 0.8, 0.1}
};

अपेक्षित आउटपुट:
double expected = 0.289909;
इनपुट:
long[] labels = new long[] {0, 1};
double[][] probabilities = new double[][] {
    new double[] {0.7, 0.2, 0.1},
    new double[] {0.1, 0.8, 0.1}
};

अपेक्षित आउटपुट:
double expected = 0.289909;

व्याख्या

सही क्लास को 0.7 और 0.8 मिले: -(ln(0.7) + ln(0.8)) / 2 = -(-0.356675 - 0.223144) / 2 ≈ 0.289909।

उदाहरण 2
इनपुट:
labels = [1]
probabilities = [
    [1.0, 0.0]
]

अपेक्षित आउटपुट:
expected = 16.118096
इनपुट:
std::vector<long long> labels = {1};
std::vector<std::vector<double>> probabilities = {
    {1.0, 0.0}
};

अपेक्षित आउटपुट:
double expected = 16.118096;
इनपुट:
long[] labels = new long[] {1};
double[][] probabilities = new double[][] {
    new double[] {1.0, 0.0}
};

अपेक्षित आउटपुट:
double expected = 16.118096;

व्याख्या

सही क्लास को प्रायिकता 0 मिली, जिसे 0.0000001 तक बढ़ाया जाता है, इसलिए लॉस -ln(0.0000001) ≈ 16.118096 है: आत्मविश्वास से दिया गया गलत जवाब भारी दंड पाता है।

संदर्भ

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

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

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

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