- Ausführende
-
Lernen
Python lernen Ausführbare Beispiele, NumPy, pandas und mehr KI lernenNeuronale Netze, ML und LLMs von Grund auf C/C++ lernen Zeiger, Speicher, STL und modernes C++ C# lernenC#-Grundlagen, OOP, LINQ, Async und .NET-Übungen Matplotlib lernenLinien-, Balken-, Streu- und Kreisdiagramme mit interaktiven Visualisierungen Python-Algorithmen Suche, Sortierung, Rekursion und Visualisierungen O(n) C/C++-Algorithmen Implementierungen in C und C++ vergleichen Programmieren für Kinder Spielend programmieren lernen!
- AufgabenNeu
- Für LehrkräfteNeu
- Aktualisierungen
- Spendier mir einen Kaffee
Ein Mehrklassen-Klassifikator gibt pro Klasse eine Wahrscheinlichkeit aus (zum Beispiel per Softmax). Die kategoriale Kreuzentropie bestraft ihn, wenn er der richtigen Klasse eine niedrige Wahrscheinlichkeit gibt:
loss = -(ln(p₁) + ln(p₂) + … + ln(pₙ)) / n
wobei pᵢ die Wahrscheinlichkeit ist, die das Modell der richtigen Klasse von Beispiel i gegeben hat. Um ln(0) zu vermeiden, hebe zuerst jede Wahrscheinlichkeit unter 0.0000001 auf 0.0000001 an.
Implementiere categorical_cross_entropy(probabilities, labels).
Eingabe
probabilities: Eine Zeile pro Beispiel mit einer Wahrscheinlichkeit pro Klasse.
labels: Der Index der richtigen Klasse jedes Beispiels (ab 0).
Ausgabe
Gib den durchschnittlichen Verlust als Dezimalzahl zurück.
Einschränkungen
1 ≤ Beispiele ≤ 1.000, 2 ≤ Klassen ≤ 100
0 ≤ jede Wahrscheinlichkeit ≤ 1
0 ≤ labels[i] < Anzahl der Klassen
Beispiele
Beispiel 1
Eingabe:
probabilities = [
[0.7, 0.2, 0.1],
[0.1, 0.8, 0.1]
]
labels = [0, 1]
Erwartete Ausgabe:
0.289909
Erläuterung
Die richtigen Klassen erhielten 0.7 und 0.8: -(ln(0.7) + ln(0.8)) / 2 = -(-0.356675 - 0.223144) / 2 ≈ 0.289909.
Beispiel 2
Eingabe:
probabilities = [
[1.0, 0.0]
]
labels = [1]
Erwartete Ausgabe:
16.118096
Erläuterung
Die richtige Klasse erhielt die Wahrscheinlichkeit 0, die auf 0.0000001 angehoben wird, also ist der Verlust -ln(0.0000001) ≈ 16.118096: Eine selbstsichere falsche Antwort wird hart bestraft.
Referenzen
-
Beispiel 1 Nicht ausgeführtEingabe:
probabilities = [ [0.7, 0.2, 0.1], [0.1, 0.8, 0.1] ] labels = [0, 1]Erwartete Ausgabe:0.289909Deine Ausgabe -
Beispiel 2 Nicht ausgeführtEingabe:
probabilities = [ [1.0, 0.0] ] labels = [1]Erwartete Ausgabe:16.118096Deine Ausgabe
4 versteckte Tests werden beim Einreichen ebenfalls ausgeführt. Scheitert dein Code an einem, siehst du diesen Test. Löse die Aufgabe, um alle zu sehen.
Online JavaScript Runner
Write, run, and debug JavaScript or Node.js online in a full-featured browser IDE. Work with multiple files and packages, save your workspace, and collaborate in real time.
🚀 339,661 Gesamt-Ausführungen (665 diesen Monat)
Übe JavaScript mit Coding Challenges
Löse praktische Aufgaben direkt im Editor: Führe die Beispieltests aus, reiche ein und erhalte ein KI-Code-Review.
⚡ Über diesen JavaScript-(Node.js)-Online-Executor
Der CodeUtility JavaScript Executor ermöglicht es dir, modernen JavaScript-Code direkt im Browser zu schreiben und auszuführen - sofort und ohne Einrichtung. Er verwendet echte Node.js-Umgebungen, um deinen Code sicher in einem abgesicherten (Sandbox-)Container auszuführen, und unterstützt die Versionen 16, 18 und 20.
Dieses Tool ist ideal, um Node.js-Snippets zu testen, ES6+-Syntax zu erkunden oder grundlegende JavaScript-Konzepte wie Schleifen, Funktionen, Arrays, Promises und das Verhalten von async/await zu lernen.
Du kannst es auch verwenden, um Algorithmen zu überprüfen, kleine Skripte zu debuggen oder mit Laufzeitlogik zu experimentieren, ohne Node lokal zu installieren. Es ist ideal für Lernende, Backend-Entwicklerinnen und -Entwickler oder alle, die eine schnelle, browserbasierte Möglichkeit benötigen, JavaScript-Code auszuführen.
Mehr als nur ein Code-Runner
Nutzen Sie im selben Executor einen Editor für mehrere Dateien, ein isoliertes Ausführungsterminal, laufzeitspezifische Bibliotheken, persistente Arbeitsbereiche, Freigaben und Zusammenarbeit in Echtzeit.
Wie verwende ich diesen Executor?
Wählen Sie eine Laufzeit aus, öffnen oder erstellen Sie eine Datei, schreiben Sie Ihren Code und wählen Sie Ausführen. Die Ausgabe erscheint im Terminal. Angemeldete Benutzer können Dateien in einem Arbeitsbereich speichern, Bibliotheken installieren und über Freigaben zusammenarbeiten.
- Wählen Sie eine Version aus und bearbeiten Sie die aktuelle Datei oder öffnen Sie eine andere Datei aus dem Arbeitsbereich.
- Führen Sie den Code aus, geben Sie bei Aufforderung Daten im Terminal ein und prüfen Sie den gespeicherten Ausführungsverlauf.
- Nutzen Sie Bibliotheken, Arbeitsbereichswerkzeuge, Freigaben und den Chat, wenn Ihre Aufgabe mehr als ein einzelnes Codefragment erfordert.
💡 Node.js-Grundlagen-Leitfaden für Einsteigerinnen und Einsteiger
1. Variablen und Konstanten deklarieren
Verwende let oder const für Variablen mit Block-Scope. const wird für Konstanten verwendet.
let x = 10;
const PI = 3.14;
let name = "Alice";
let isActive = true;
2. Verzweigungen (if / switch)
Verwende if, else if, else oder switch für den Kontrollfluss.
let x = 2;
if (x === 1) {
console.log("Eins");
} else if (x === 2) {
console.log("Zwei");
} else {
console.log("Sonstiges");
}
switch (x) {
case 1:
console.log("Eins");
break;
case 2:
console.log("Zwei");
break;
default:
console.log("Sonstiges");
}
3. Schleifen
Verwende for, while und forEach, um über Daten zu iterieren.
for (let i = 0; i < 3; i++) {
console.log(i);
}
let n = 3;
while (n > 0) {
console.log(n);
n--;
}
4. Arrays
Verwende Arrays, um geordnete Wertelisten zu speichern. Greife über Indizes darauf zu.
let fruits = ["apfel", "banane", "kirsche"];
console.log(fruits[0]);
console.log(fruits.length);
5. Array-Manipulation
Verwende Methoden wie push, pop, slice und reverse.
fruits.push("kiwi");
fruits.pop();
console.log(fruits.slice(0, 2));
console.log(fruits.reverse());
let squares = [1, 2, 3, 4, 5].map(x => x * x);
console.log(squares);
6. Konsolen-Ein-/Ausgabe
Verwende console.log für Ausgaben und das readline-Modul für Eingaben.
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
rl.question("Wie heißt du? ", name => {
console.log(`Hallo, ${name}`);
rl.close();
});
7. Funktionen
Funktionen können deklariert oder als Ausdruck definiert werden. Pfeilfunktionen werden in modernem JavaScript häufig verwendet.
function greet(name) {
return `Hallo, ${name}`;
}
const add = (a, b) => a + b;
console.log(greet("Alice"));
console.log(add(2, 3));
8. Objekte (Maps)
Objekte speichern Schlüssel-Wert-Paare. Sie ähneln Dictionaries bzw. Maps.
let person = { name: "Bob", age: 25 };
console.log(person.name);
console.log(person["age"]);
// ES6-Map
const map = new Map();
map.set("a", 1);
console.log(map.get("a"));
9. Fehlerbehandlung
Verwende try, catch und finally, um Fehler sicher zu behandeln.
try {
throw new Error("Etwas ist schiefgelaufen");
} catch (e) {
console.log(e.message);
} finally {
console.log("Aufräumen, falls nötig");
}
10. Datei-I/O
Verwende das fs-Modul von Node.js, um Dateien zu lesen und zu schreiben.
const fs = require("fs");
fs.writeFileSync("test.txt", "Hallo Datei");
const data = fs.readFileSync("test.txt", "utf8");
console.log(data);
11. String-Manipulation
Verwende Methoden wie trim(), toUpperCase(), replace() und split().
let text = " Hallo Welt ";
console.log(text.trim());
console.log(text.toUpperCase());
console.log(text.replace("Hallo", "Hi"));
console.log(text.split(" "));
12. Klassen & Objekte
ES6+ unterstützt OOP mit class-Syntax.
class Person {
constructor(name) {
this.name = name;
}
greet() {
return `Hi, ich bin ${this.name}`;
}
}
const p = new Person("Alice");
console.log(p.greet());
13. Referenzen
Objekte und Arrays in JavaScript werden per Referenz übergeben.
function update(arr) {
arr.push("geändert");
}
let data = ["ursprünglich"];
update(data);
console.log(data); // ["ursprünglich", "geändert"]