- Исполнители
-
Обучение
Учебный центр Python Запускаемые примеры, NumPy, pandas и другое Учебный центр C и C++ Указатели, память, STL и современный C++ Учебный центр C#Основы C#, ООП, LINQ, async и упражнения .NET Алгоритмы на Python Поиск, сортировка, рекурсия и визуализация O(n) Алгоритмы на C и C++ Сравнение реализаций на C и C++
- Задачи
Adam хранит для каждого веса два скользящих средних — градиента (m) и квадрата градиента (v) — и с их помощью даёт каждому весу собственный размер шага.
Начните с m = 0 и v = 0 для каждого веса. Для каждого шага t = 1, 2, 3, … с градиентом g:
- m ← beta1 × m + (1 - beta1) × g
- v ← beta2 × v + (1 - beta2) × g²
- m̂ = m / (1 - beta1ᵗ) и v̂ = v / (1 - beta2ᵗ) (коррекция смещения)
- w ← w - learning_rate × m̂ / (√v̂ + epsilon)
Реализуйте adam_steps(gradients, weights, learning_rate, beta1, beta2, epsilon), применяя одно обновление на каждую строку gradients по порядку.
Входные данные
gradients: Одна строка на шаг; в каждой строке по одному градиенту на вес.
weights: Начальные веса.
learning_rate, beta1, beta2, epsilon: Гиперпараметры Adam (типичные значения 0.001, 0.9, 0.999 и 0.00000001).
Выходные данные
Верните веса после всех шагов.
Ограничения
0 ≤ шаги ≤ 1 000, 1 ≤ веса ≤ 100
0 < learning_rate ≤ 1, 0 ≤ beta1, beta2 < 1, 0 < epsilon ≤ 0.001
-100 ≤ каждое значение ≤ 100
Примеры
Пример 1
Ввод:
beta1 = 0.9
beta2 = 0.999
epsilon = 1.0e-08
weights = [1.0]
gradients = [
[2.0]
]
learning_rate = 0.1
Ожидаемый вывод:
[0.9]
Пояснение
m = 0.1 × 2 = 0.2 и v = 0.001 × 4 = 0.004. Коррекция смещения даёт m̂ = 0.2 / 0.1 = 2 и v̂ = 0.004 / 0.001 = 4, поэтому шаг равен 0.1 × 2 / √4 = 0.1: w = 0.9. На первом шаге Adam сдвигает каждый вес примерно на скорость обучения, независимо от величины градиента.
Пример 2
Ввод:
beta1 = 0.9
beta2 = 0.999
epsilon = 1.0e-08
weights = [0.0, 0.0]
gradients = [
[100.0, 0.01]
]
learning_rate = 0.01
Ожидаемый вывод:
[-0.01, -0.01]
Пояснение
Градиенты различаются в 10 000 раз, но оба веса сдвигаются примерно на 0.01, до [-0.01, -0.01]: Adam масштабирует каждый шаг по величине собственного градиента.
Ссылки
-
Пример 1 Не запущеноВвод:
beta1 = 0.9 beta2 = 0.999 epsilon = 1.0e-08 weights = [1.0] gradients = [ [2.0] ] learning_rate = 0.1Ожидаемый вывод:[0.9]Ваш вывод -
Пример 2 Не запущеноВвод:
beta1 = 0.9 beta2 = 0.999 epsilon = 1.0e-08 weights = [0.0, 0.0] gradients = [ [100.0, 0.01] ] learning_rate = 0.01Ожидаемый вывод:[-0.01, -0.01]Ваш вывод
При отправке также выполняются ещё 4 скрытых теста.
Онлайн-компилятор и отладчик C#
Пишите, компилируйте, запускайте и отлаживайте C# онлайн. Используйте точки останова, пошаговое выполнение и просмотр объектов в многофайловой IDE без Visual Studio.
🚀 350,747 всего выполнений (1 в этом месяце)
Практикуйте C# на задачах
Решайте задачи прямо в редакторе: запускайте тесты, отправляйте решение и получайте AI-рецензию.
🔷 Об этом онлайн-исполнителе C# / .NET
CodeUtility C# Executor позволяет писать и запускать настоящий C#‑код прямо в браузере - без установки, настройки Visual Studio или .NET SDK. Он работает в защищенной песочнице с поддержкой .NET runtime и современных версий языка C#, включая C# 9 и новее.
Этот инструмент использует dotnet-script под капотом, чтобы компилировать и выполнять ваш код с реальным поведением .NET, позволяя экспериментировать как с базовыми, так и с продвинутыми возможностями C#, такими как LINQ, async/await, сопоставление с образцом и обобщения.
Вы можете тестировать простые скрипты, функции и логические конструкции или изучать концепции классов, структур, наследования и интерфейсов - все это в чистой, не отвлекающей среде для кодинга.
Независимо от того, изучаете ли вы C#, тестируете алгоритмы или экспериментируете с возможностями .NET, CodeUtility C# Executor дает вам быстрый, безопасный и надежный способ мгновенно запускать C#‑код из любого браузера.
Больше, чем средство запуска кода
Используйте в одном исполнителе многофайловый редактор, изолированный терминал выполнения, библиотеки для выбранной среды, постоянные рабочие пространства, общий доступ и совместную работу в реальном времени.
Как пользоваться этим исполнителем?
Выберите среду выполнения, откройте или создайте файл, напишите код и нажмите «Запустить». Результат появится в терминале. Пользователи, вошедшие в систему, могут хранить файлы в рабочем пространстве, устанавливать библиотеки и совместно работать через общие ресурсы.
- Выберите версию и отредактируйте текущий файл или откройте другой файл рабочего пространства.
- Запустите код, при необходимости введите данные в терминале и просмотрите сохранённую историю запусков.
- Используйте библиотеки, инструменты рабочего пространства, общий доступ и чат, когда для задачи требуется несколько фрагментов кода.
💡 Основы C# и примеры, которые можно попробовать выше
1. Объявление переменных и констант
В C# используется строгая типизация переменных. Применяйте const для констант времени компиляции и readonly для констант времени выполнения.
int age = 30;
double pi = 3.14159;
char grade = 'A';
string name = "Alice";
bool isActive = true;
// Константы
const int MaxUsers = 100;
const string Company = "CodeUtility";
2. Условия (if / switch)
Используйте if, else if и switch для управления потоком выполнения.
int x = 2;
if (x == 1)
{
Console.WriteLine("Один");
}
else if (x == 2)
{
Console.WriteLine("Два");
}
else
{
Console.WriteLine("Другое");
}
switch (x)
{
case 1:
Console.WriteLine("Один");
break;
case 2:
Console.WriteLine("Два");
break;
default:
Console.WriteLine("Другое");
break;
}
3. Циклы
В C# поддерживаются циклы for, while и foreach.
for (int i = 0; i < 3; i++)
{
Console.WriteLine(i);
}
int n = 3;
while (n > 0)
{
Console.WriteLine(n);
n--;
}
4. Массивы
Массивы хранят коллекции фиксированного размера из элементов одного типа.
int[] numbers = { 10, 20, 30 };
Console.WriteLine(numbers[1]);
5. Работа со списками
Используйте List<T> для динамических коллекций.
List<int> nums = new List<int> { 1, 2, 3 };
nums.Add(4);
nums.Remove(2);
foreach (int n in nums)
{
Console.Write(n + " ");
}
6. Ввод/вывод в консоли
Используйте Console.WriteLine и Console.ReadLine для базового ввода-вывода.
Console.Write("Введите ваше имя: ");
string name = Console.ReadLine();
Console.WriteLine($"Привет, {name}!");
7. Функции
Определяйте методы, указывая тип возвращаемого значения, имя и параметры.
int Add(int a, int b)
{
return a + b;
}
Console.WriteLine(Add(3, 4));
8. Словари
Dictionary<TKey, TValue> хранит пары ключ-значение.
Dictionary<string, int> ages = new Dictionary<string, int>();
ages["Alice"] = 30;
Console.WriteLine(ages["Alice"]);
9. Обработка исключений
Обрабатывайте ошибки времени выполнения с помощью try, catch и finally.
try
{
throw new Exception("Что-то пошло не так");
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
10. Работа с файлами
Используйте File и StreamReader/StreamWriter для операций с файлами.
File.WriteAllText("file.txt", "Привет, файл");
string text = File.ReadAllText("file.txt");
Console.WriteLine(text);
11. Работа со строками
Строки в C# поддерживают методы Length, Substring, Contains и другие.
string message = "Hello World";
Console.WriteLine(message.Length);
Console.WriteLine(message.Substring(0, 5));
Console.WriteLine(message.Contains("World"));
12. Классы и объекты
C# поддерживает объектно-ориентированное программирование через классы и объекты.
class Person
{
public string Name;
public Person(string name) => Name = name;
public void Greet() => Console.WriteLine($"Привет, я {Name}");
}
Person p = new Person("Alice");
p.Greet();