समस्या
लॉस फ़ंक्शन मॉडल की गलतियों को एक ऐसी संख्या में बदल देता है जिसे कम करना है। तीन आम लॉस के लिए compute_loss(kind, predictions, targets) लागू करें, जहाँ n भविष्यवाणियों की संख्या है:
"mse"(मीन स्क्वेयर्ड एरर): (p - t)² का औसत"mae"(मीन एब्सोल्यूट एरर): |p - t| का औसत"binary_cross_entropy": [t × ln(p) + (1 - t) × ln(1 - p)] के औसत का ऋणात्मक। पहले हर भविष्यवाणी p को [0.0000001, 0.9999999] की सीमा में सीमित करें, ताकि लघुगणक कभी ln(0) न हो।
इनपुट
kind: "mse", "mae" या "binary_cross_entropy"।
predictions: मॉडल की भविष्यवाणियाँ।
targets: सही मान (समान लंबाई)। क्रॉस-एंट्रॉपी में ये 0 या 1 होते हैं और भविष्यवाणियाँ 0 और 1 के बीच होती हैं।
आउटपुट
लॉस को दशमलव संख्या के रूप में लौटाएँ।
सीमाएँ
1 ≤ लंबाई ≤ 1,000
-1,000 ≤ हर मान ≤ 1,000 (क्रॉस-एंट्रॉपी में 0 ≤ p ≤ 1 और t ∈ {0, 1})
उदाहरण
इनपुट:
kind = "mse"
targets = [3.0, -0.5, 2.0]
predictions = [2.5, 0.0, 2.0]
अपेक्षित आउटपुट:
expected = 0.166667
इनपुट:
std::string kind = "mse";
std::vector<double> targets = {3.0, -0.5, 2.0};
std::vector<double> predictions = {2.5, 0.0, 2.0};
अपेक्षित आउटपुट:
double expected = 0.166667;
इनपुट:
string kind = "mse";
double[] targets = new double[] {3.0, -0.5, 2.0};
double[] predictions = new double[] {2.5, 0.0, 2.0};
अपेक्षित आउटपुट:
double expected = 0.166667;
व्याख्या
स्क्वेयर्ड एरर: 0.5² = 0.25, 0.5² = 0.25 और 0² = 0। इनका औसत 0.5 / 3 ≈ 0.166667 है।
इनपुट:
kind = "binary_cross_entropy"
targets = [1.0, 0.0]
predictions = [0.9, 0.2]
अपेक्षित आउटपुट:
expected = 0.164252
इनपुट:
std::string kind = "binary_cross_entropy";
std::vector<double> targets = {1.0, 0.0};
std::vector<double> predictions = {0.9, 0.2};
अपेक्षित आउटपुट:
double expected = 0.164252;
इनपुट:
string kind = "binary_cross_entropy";
double[] targets = new double[] {1.0, 0.0};
double[] predictions = new double[] {0.9, 0.2};
अपेक्षित आउटपुट:
double expected = 0.164252;
व्याख्या
-(ln(0.9) + ln(1 - 0.2)) / 2 = -(-0.105361 - 0.223144) / 2 ≈ 0.164252। आत्मविश्वास से की गई सही भविष्यवाणियों का लॉस कम होता है।
संदर्भ
यह चुनौती CodeUtility के लिए अनुकूलित की गई है। ऊपर दिए गए स्टेटमेंट और सीमाओं का पालन करें।