- Ausführende
-
Lernen
Python-Lernbereich Ausführbare Beispiele, NumPy, pandas und mehr C/C++-Lernbereich Zeiger, Speicher, STL und modernes C++ C#-LernbereichC#-Grundlagen, OOP, LINQ, Async und .NET-Übungen Python-Algorithmen Suche, Sortierung, Rekursion und Visualisierungen O(n) C/C++-Algorithmen Implementierungen in C und C++ vergleichen
- Aufgaben
Mit Mini-Batch-Gradientenabstieg wird fast jedes neuronale Netz trainiert: Teile die Daten in kleine Batches und aktualisiere die Gewichte nach jedem.
Trainiere y = w × x + b auf dem mittleren quadratischen Fehler, beginnend mit w = 0 und b = 0. Teile die Beispiele in jeder Epoche der Reihe nach in Batches zu je batch_size (der letzte Batch darf kleiner sein). Für jeden Batch der Größe n:
- errorᵢ = w × xᵢ + b - yᵢ für jedes Beispiel im Batch
- dw = (2 / n) × Σ errorᵢ × xᵢ und db = (2 / n) × Σ errorᵢ
- w ← w - learning_rate × dw und b ← b - learning_rate × db
Implementiere train_mini_batch(xs, ys, batch_size, learning_rate, epochs).
Eingabe
xs, ys: Die Datenpunkte (gleiche Länge).
batch_size: Beispiele pro Batch.
learning_rate, epochs: Die Schrittweite und die Anzahl der Durchläufe über die Daten.
Ausgabe
Gib nach dem Training [w, b] zurück.
Einschränkungen
1 ≤ Anzahl der Punkte ≤ 1.000, 1 ≤ batch_size ≤ Anzahl der Punkte, 0 ≤ epochs ≤ 1.000
0 < learning_rate ≤ 1
-100 ≤ jeder Wert ≤ 100
Beispiele
Beispiel 1
Eingabe:
xs = [1.0, 2.0, 3.0]
ys = [2.0, 4.0, 6.0]
epochs = 1
batch_size = 2
learning_rate = 0.1
Erwartete Ausgabe:
[2.44, 1.08]
Erläuterung
Batch 1 ist x = [1, 2]: Fehler -2 und -4, dw = -10, db = -6, also w = 1 und b = 0.6. Batch 2 ist x = [3] allein: Fehler 1×3 + 0.6 - 6 = -2.4, dw = 2 × (-2.4) × 3 = -14.4 und db = -4.8, also w = 2.44 und b = 1.08. Ergebnis: [2.44, 1.08].
Beispiel 2
Eingabe:
xs = [1.0, 2.0, 3.0, 4.0]
ys = [3.0, 5.0, 7.0, 9.0]
epochs = 1
batch_size = 4
learning_rate = 0.05
Erwartete Ausgabe:
[1.75, 0.6]
Erläuterung
Ein Batch so groß wie der Datensatz ist gewöhnlicher Batch-Gradientenabstieg: eine Aktualisierung pro Epoche. Ergebnis: [1.75, 0.6].
Referenzen
-
Beispiel 1 Nicht ausgeführtEingabe:
xs = [1.0, 2.0, 3.0] ys = [2.0, 4.0, 6.0] epochs = 1 batch_size = 2 learning_rate = 0.1Erwartete Ausgabe:[2.44, 1.08]Deine Ausgabe -
Beispiel 2 Nicht ausgeführtEingabe:
xs = [1.0, 2.0, 3.0, 4.0] ys = [3.0, 5.0, 7.0, 9.0] epochs = 1 batch_size = 4 learning_rate = 0.05Erwartete Ausgabe:[1.75, 0.6]Deine Ausgabe
4 versteckte Tests werden beim Einreichen ebenfalls ausgeführt.
Online-C++-Compiler und -Debugger
Kompiliere und debugge C++ online mit Haltepunkten, Variablenansicht und GDB-Schrittsteuerung im Servermodus.
🚀 2,392,381 Gesamt-Ausführungen (7 diesen Monat)
Übe C++ mit Coding Challenges
Löse praktische Aufgaben direkt im Editor: Führe die Beispieltests aus, reiche ein und erhalte ein KI-Code-Review.
Nach Thema entdecken
Lerne C und C++ gemeinsam mit praktischem Code, Ausgaben, Speichermodellen, Datenstrukturen, Algorithmen und modernem C++.
💻 Über diesen C++-Online-Executor
Der CodeUtility C++ Executor ermöglicht es dir, C++‑Code direkt im Browser zu schreiben und auszuführen - ganz ohne Installation oder Compiler-Setup. Er wird von einer sicheren Sandbox betrieben, die echte C++‑Standards unterstützt, von C++11, C++14, C++17 bis zur neuesten Version.
Dieses Tool nutzt einen echten C++‑Compiler in der Cloud, um deinen Code zu kompilieren und auszuführen - so erhältst du über Versionen hinweg ein genaues und konsistentes Verhalten. Du kannst frei mit zentralen C++‑Konzepten experimentieren, wie Variablen, Funktionen, Schleifen, Bedingungen und objektorientierter Programmierung.
Egal ob du dich auf Interviews vorbereitest, moderne C++‑Features lernst oder Algorithmuslogik überprüfst: Der CodeUtility C++ Executor bietet eine einfache und dennoch leistungsstarke Umgebung, um Code sofort von jedem Gerät aus 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.
💡 C++‑Grundlagen & Beispiele, die du oben ausprobieren kannst
1. Variablen und Konstanten deklarieren
C++ erfordert die Deklaration des Typs für jede Variable. Verwende const, um schreibgeschützte Werte zu definieren, die nach der Initialisierung nicht mehr geändert werden können.
int age = 30;
double pi = 3.14159;
char grade = 'A';
std::string name = "Alice";
bool isActive = true;
// Konstanten
const int MAX_USERS = 100;
const std::string COMPANY = "CodeUtility";
// Der Versuch, eine const zu ändern, verursacht einen Compile‑Time-Fehler
// MAX_USERS = 200; // ❌ Fehler
2. Bedingungen (if / switch)
Verwende if, else if, else für Verzweigungen. Verwende switch für mehrere Werte.
int x = 2;
if (x == 1) {
std::cout << "Eins\n";
} else if (x == 2) {
std::cout << "Zwei\n";
} else {
std::cout << "Sonstiges\n";
}
// Switch-Case
switch (x) {
case 1:
std::cout << "Eins\n";
break;
case 2:
std::cout << "Zwei\n";
break;
default:
std::cout << "Sonstiges\n";
}
3. Schleifen
Verwende for, while und do-while, um Codeblöcke zu wiederholen.
for (int i = 0; i < 3; i++) {
std::cout << i << "\n";
}
int n = 3;
while (n > 0) {
std::cout << n << "\n";
n--;
}
4. Arrays
Arrays speichern mehrere Elemente desselben Typs.
int numbers[3] = {10, 20, 30};
std::cout << numbers[1] << "\n";
5. Array-/Vektor-Manipulation
Verwende std::vector für dynamische Arrays.
#include <vector>
std::vector nums = {1, 2, 3};
nums.push_back(4);
nums.pop_back();
for (int n : nums) {
std::cout << n << " ";
}
6. Konsolen-Ein-/Ausgabe
Verwende std::cin für Eingabe und std::cout für Ausgabe.
std::string name;
std::cout << "Gib deinen Namen ein: ";
std::cin >> name;
std::cout << "Hallo, " << name << "\n";
7. Funktionen
Funktionen bündeln wiederverwendbare Logik. Verwende Parameter und Rückgabetypen.
int add(int a, int b) {
return a + b;
}
std::cout << add(3, 4);
8. Maps
std::map speichert Schlüssel‑Wert‑Paare wie Wörterbücher.
#include <map>
std::map ages;
ages["Alice"] = 30;
std::cout << ages["Alice"];
9. Ausnahmebehandlung
Verwende try und catch, um Laufzeitfehler zu behandeln.
try {
throw std::runtime_error("Fehler aufgetreten");
} catch (const std::exception& e) {
std::cout << e.what();
}
10. Datei-Ein-/Ausgabe
Verwende fstream, um Dateien zu lesen und zu schreiben.
#include <fstream>
std::ofstream out("file.txt");
out << "Hallo Datei";
out.close();
std::ifstream in("file.txt");
std::string line;
getline(in, line);
std::cout << line;
in.close();
11. String-Verarbeitung
C++‑Strings unterstützen Methoden wie length(), substr() und find().
std::string text = "Hello World";
std::cout << text.length();
std::cout << text.substr(0, 5);
std::cout << text.find("World");
12. Klassen & Objekte
C++ unterstützt objektorientierte Programmierung mit Klassen.
class Person {
public:
std::string name;
Person(std::string n) : name(n) {}
void greet() { std::cout << "Hi, ich bin " << name; }
};
Person p("Alice");
p.greet();
13. Zeiger
Ein Zeiger speichert die Speicheradresse einer anderen Variable. Verwende &, um eine Adresse zu erhalten,
und *, um zu dereferenzieren (den Wert an der Adresse zu lesen).
int x = 10;
int* ptr = &x;
std::cout << "Wert von x: " << x << "\n";
std::cout << "Adresse von x: " << ptr << "\n";
std::cout << "Wert über Zeiger: " << *ptr << "\n";
// x über den Zeiger ändern
*ptr = 20;
std::cout << "Aktualisiertes x: " << x << "\n";
🐞 %{language}-Code online debuggen
Mit dem Online-%{language}-Debugger findest du Laufzeit- und Logikfehler ohne lokalen Compiler oder IDE. Der Servermodus kompiliert mit Debugsymbolen und führt das Programm unter GDB aus.
- Setze Haltepunkte neben den Zeilennummern.
- Wähle Debug, um zu kompilieren und am ersten Haltepunkt zu pausieren.
- Prüfe aktuelle Zeile, Aufrufliste und Variablen.
- Steuere die Ausführung mit Fortsetzen, Überspringen, Hineinspringen oder Herausspringen.
- Beende die Sitzung mit Stop.
Beginne mit einem kleinen reproduzierbaren Beispiel und setze den Haltepunkt direkt vor die unerwartete Stelle.