- 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
Adam führt pro Gewicht zwei gleitende Mittelwerte, des Gradienten (m) und des quadrierten Gradienten (v), und gibt damit jedem Gewicht eine eigene Schrittweite.
Beginne mit m = 0 und v = 0 für jedes Gewicht. Für jeden Schritt t = 1, 2, 3, … mit Gradient g:
- m ← beta1 × m + (1 - beta1) × g
- v ← beta2 × v + (1 - beta2) × g²
- m̂ = m / (1 - beta1ᵗ) und v̂ = v / (1 - beta2ᵗ) (Bias-Korrektur)
- w ← w - learning_rate × m̂ / (√v̂ + epsilon)
Implementiere adam_steps(gradients, weights, learning_rate, beta1, beta2, epsilon) und wende pro Zeile von gradients ein Update an, in Reihenfolge.
Eingabe
gradients: Eine Zeile pro Schritt; jede Zeile hat einen Gradienten pro Gewicht.
weights: Die Startgewichte.
learning_rate, beta1, beta2, epsilon: Die Hyperparameter von Adam (üblich sind 0.001, 0.9, 0.999 und 0.00000001).
Ausgabe
Gib die Gewichte nach allen Schritten zurück.
Einschränkungen
0 ≤ Schritte ≤ 1.000, 1 ≤ Gewichte ≤ 100
0 < learning_rate ≤ 1, 0 ≤ beta1, beta2 < 1, 0 < epsilon ≤ 0.001
-100 ≤ jeder Wert ≤ 100
Beispiele
Beispiel 1
Eingabe:
gradients = [
[2.0]
]
weights = [1.0]
learning_rate = 0.1
beta1 = 0.9
beta2 = 0.999
epsilon = 1.0e-08
Erwartete Ausgabe:
[0.9]
Erläuterung
m = 0.1 × 2 = 0.2 und v = 0.001 × 4 = 0.004. Die Bias-Korrektur ergibt m̂ = 0.2 / 0.1 = 2 und v̂ = 0.004 / 0.001 = 4, also ist der Schritt 0.1 × 2 / √4 = 0.1: w = 0.9. Im ersten Schritt bewegt Adam jedes Gewicht ungefähr um die Lernrate, unabhängig von der Größe des Gradienten.
Beispiel 2
Eingabe:
gradients = [
[100.0, 0.01]
]
weights = [0.0, 0.0]
learning_rate = 0.01
beta1 = 0.9
beta2 = 0.999
epsilon = 1.0e-08
Erwartete Ausgabe:
[-0.01, -0.01]
Erläuterung
Die Gradienten unterscheiden sich um den Faktor 10.000, trotzdem bewegen sich beide Gewichte um etwa 0.01, auf [-0.01, -0.01]: Adam skaliert jeden Schritt mit der Größe des jeweiligen Gradienten.
Referenzen
-
Beispiel 1 Nicht ausgeführtEingabe:
gradients = [ [2.0] ] weights = [1.0] learning_rate = 0.1 beta1 = 0.9 beta2 = 0.999 epsilon = 1.0e-08Erwartete Ausgabe:[0.9]Deine Ausgabe -
Beispiel 2 Nicht ausgeführtEingabe:
gradients = [ [100.0, 0.01] ] weights = [0.0, 0.0] learning_rate = 0.01 beta1 = 0.9 beta2 = 0.999 epsilon = 1.0e-08Erwartete Ausgabe:[-0.01, -0.01]Deine 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 Java Compiler
Write, compile, run, and debug Java code online in a full-featured browser IDE. Work with multiple files, save your workspace, and share or collaborate in real time - no setup required.
🚀 260,408 Gesamt-Ausführungen (5,854 diesen Monat)
Übe Java 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 Java-Online-Executor
Der CodeUtility Java Executor ermöglicht es dir, Java-Programme direkt in deinem Browser zu schreiben und auszuführen - keine Installation, kein JDK-Setup und keine IDE erforderlich. Er wird von einer sicheren Sandbox betrieben, die echte Java-Laufzeitversionen 8, 11, 17, 21 sowie die neueste unterstützt.
Dieses Tool kompiliert und führt Java-Code in der Cloud aus, mit einem echten javac-Compiler und einer Java-Laufzeitumgebung,
sodass du Klassen, Methoden und Logik genau so testen kannst, wie sie lokal funktionieren würden.
Egal, ob du objektorientierte Programmierung übst, dich auf Interviews vorbereitest oder Snippets vor der Integration testest - der CodeUtility Java Executor bietet eine schnelle und zuverlässige Umgebung, um echten Java-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.
💡 Java-Grundlagen & Beispiele, die du oben ausprobieren kannst
1. Variablen und Konstanten deklarieren
In Java musst du den Typ jeder Variablen deklarieren. Verwende final für Konstanten.
int age = 30;
double pi = 3.14159;
char grade = 'A';
String name = "Alice";
boolean isActive = true;
// Konstanten
final int MAX_USERS = 100;
final String COMPANY = "CodeUtility";
2. Bedingungen (if / switch)
Verwende if, else if und switch für den Kontrollfluss.
int x = 2;
if (x == 1) {
System.out.println("Eins");
} else if (x == 2) {
System.out.println("Zwei");
} else {
System.out.println("Sonstiges");
}
switch (x) {
case 1:
System.out.println("Eins");
break;
case 2:
System.out.println("Zwei");
break;
default:
System.out.println("Sonstiges");
}
3. Schleifen
Verwende for, while und do-while für Iterationen.
for (int i = 0; i < 3; i++) {
System.out.println(i);
}
int n = 3;
while (n > 0) {
System.out.println(n);
n--;
}
4. Arrays
Arrays enthalten Sequenzen fester Größe desselben Typs.
int[] numbers = {10, 20, 30};
System.out.println(numbers[1]);
5. ArrayList-Manipulation
Verwende ArrayList für Listen mit dynamischer Größe.
import java.util.ArrayList;
ArrayList<Integer> nums = new ArrayList<>();
nums.add(1);
nums.add(2);
nums.add(3);
nums.remove(Integer.valueOf(2));
for (int num : nums) {
System.out.print(num + " ");
}
6. Konsolen-Ein-/Ausgabe
Verwende Scanner für Eingaben und System.out für Ausgaben.
import java.util.Scanner;
Scanner scanner = new Scanner(System.in);
System.out.print("Gib deinen Namen ein: ");
String name = scanner.nextLine();
System.out.println("Hallo, " + name);
7. Funktionen
Definiere Methoden mit Rückgabetypen und Parametern.
public static int add(int a, int b) {
return a + b;
}
System.out.println(add(3, 4));
8. HashMaps
Verwende HashMap für die Speicherung von Schlüssel-Wert-Paaren.
import java.util.HashMap;
HashMap<String, Integer> ages = new HashMap<>();
ages.put("Alice", 30);
System.out.println(ages.get("Alice"));
9. Ausnahmebehandlung
Verwende try und catch, um Laufzeitausnahmen zu behandeln.
try {
throw new Exception("Etwas ist schiefgelaufen");
} catch (Exception e) {
System.out.println(e.getMessage());
}
10. Datei-Ein-/Ausgabe
Verwende Files und Paths aus java.nio.file für die Dateiverarbeitung.
import java.nio.file.*;
import java.io.IOException;
Files.writeString(Paths.get("file.txt"), "Hallo Datei");
String content = Files.readString(Paths.get("file.txt"));
System.out.println(content);
11. String-Manipulation
Java-Strings unterstützen viele Methoden wie length(), substring() und contains().
String text = "Hallo Welt";
System.out.println(text.length());
System.out.println(text.substring(0, 5));
System.out.println(text.contains("Welt"));
12. Klassen & Objekte
Java unterstützt objektorientierte Programmierung mit Klassen und Instanzen.
class Person {
String name;
Person(String name) {
this.name = name;
}
void greet() {
System.out.println("Hallo, ich bin " + name);
}
}
Person p = new Person("Alice");
p.greet();