- Исполнители
-
Обучение
Учебный центр 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 скрытых теста.
Онлайн-компилятор и отладчик Python
Пишите, запускайте и отлаживайте Python онлайн. Используйте точки останова и пошаговое выполнение в серверном режиме — без установки.
🚀 4,279,640 всего выполнений (40 в этом месяце)
Практикуйте Python на задачах
Решайте задачи прямо в редакторе: запускайте тесты, отправляйте решение и получайте AI-рецензию.
🐍 Об онлайн-компиляторе Python
Онлайн-компилятор и интерпретатор Python от CodeUtility позволяет писать, запускать и тестировать код прямо в браузере — без установки и настройки. Он работает в безопасной песочнице и поддерживает реальные версии Python от 3.10 до 3.13.
Подходит для первого знакомства с Python, быстрой проверки сниппетов или отладки логики - инструмент предоставляет быстрый и не отвлекающий редактор кода. Экспериментируйте свободно и мгновенно смотрите результат в встроенной консоли.
Идеально для новичков, студентов и разработчиков, которым нужна облегчённая онлайн‑IDE для практики или быстрого прототипирования.
Больше, чем средство запуска кода
Используйте в одном исполнителе многофайловый редактор, изолированный терминал выполнения, библиотеки для выбранной среды, постоянные рабочие пространства, общий доступ и совместную работу в реальном времени.
Как пользоваться этим исполнителем?
Выберите среду выполнения, откройте или создайте файл, напишите код и нажмите «Запустить». Результат появится в терминале. Пользователи, вошедшие в систему, могут хранить файлы в рабочем пространстве, устанавливать библиотеки и совместно работать через общие ресурсы.
- Выберите версию и отредактируйте текущий файл или откройте другой файл рабочего пространства.
- Запустите код, при необходимости введите данные в терминале и просмотрите сохранённую историю запусков.
- Используйте библиотеки, инструменты рабочего пространства, общий доступ и чат, когда для задачи требуется несколько фрагментов кода.
💡 Основы Python и примеры, которые можно попробовать выше
1. Объявление переменных и констант
Python - язык с динамической типизацией, поэтому типы заранее объявлять не нужно. Встроенного ключевого слова для констант нет, но по соглашению константы пишут ПРОПИСНЫМИ буквами.
# Переменные
x = 10
pi = 3.14
name = "Алиса"
is_active = True
# Константы (по соглашению)
MAX_USERS = 100
APP_NAME = "CodeUtility"
# Константы всё ещё можно переопределить (не запрещено)
MAX_USERS = 200 # ⚠️ Технически допустимо, но не рекомендуется
2. Условные конструкции
Управляйте логикой с помощью блоков if, elif и else. В Python 3.10+ можно также использовать match-case как альтернативу switch-case.
# Обычный if-elif-else
x = 2
if x == 1:
print("Один")
elif x == 2:
print("Два")
else:
print("Другое")
Альтернатива: match-case (Python 3.10+)
# Требуется Python 3.10+
x = 2
match x:
case 1:
print("Один")
case 2:
print("Два")
case _:
print("Другое")
3. Циклы
for используется для перебора последовательностей, while выполняется, пока условие истинно.
for i in range(3):
print(i)
count = 3
while count > 0:
print(count)
count -= 1
4. Списки
Списки - упорядоченные изменяемые коллекции. Доступ к элементам осуществляется по индексу.
fruits = ["apple", "banana"]
print(fruits[0])
print(len(fruits))
5. Операции со списками
Добавляйте, удаляйте, берите срезы и переворачивайте списки. Генераторы списков позволяют компактно итерироваться.
fruits.append("cherry")
fruits.insert(1, "kiwi")
fruits.remove("banana")
fruits.pop()
print(fruits[1:3])
print(fruits[::-1])
squares = [x*x for x in range(5)]
6. Ввод/вывод в консоли
Используйте input() для чтения ввода и print() для вывода.
Можно напечатать несколько строк с помощью \n (символ новой строки) или вызвать print() несколько раз.
# Чтение ввода
name = input("Введите ваше имя: ")
print("Привет", name)
# Печать нескольких строк
print("Строка 1\nСтрока 2\nСтрока 3")
# Или используйте несколько вызовов print
print("Строка A")
print("Строка B")
print("Строка C")
7. Функции
Функции помогают организовывать код и переиспользовать его. Используйте параметры и возвращаемые значения.
def greet(name):
return "Привет " + name
print(greet("Алиса"))
8. Словари
Хранят пары ключ‑значение. Ключи уникальны, значения доступны по ключам.
person = {"name": "Боб", "age": 25}
print(person["name"])
print(person.get("email", "Не указано"))
9. Обработка исключений
Используйте try и except, чтобы корректно перехватывать и обрабатывать ошибки.
try:
x = 1 / 0
except ZeroDivisionError:
print("Нельзя делить на ноль")
10. Файловый ввод/вывод
Читайте и записывайте файлы с помощью open().
with open("data.txt", "w") as f:
f.write("Привет, мир")
with open("data.txt", "r") as f:
print(f.read())
11. Работа со строками
У строк Python есть мощные методы: strip(), replace() и split().
text = " Привет, мир "
print(text.strip())
print(text.upper())
print(text.replace("Привет", "Здравствуй"))
print(text.split())
12. Классы и объекты
Определяйте переиспользуемые шаблоны с помощью классов. Используйте __init__ для инициализации объектов.
class Person:
def __init__(self, name):
self.name = name
def greet(self):
return "Привет, я " + self.name
p = Person("Алиса")
print(p.greet())
🐞 Как отлаживать Python-код онлайн
Онлайн-отладчик Python помогает находить логические ошибки без установки Python или IDE. Отладка выполняется в серверном режиме на Python 3.10–3.13.
- Выберите серверную версию Python в меню среды выполнения.
- Нажмите рядом с номером строки, чтобы установить одну или несколько точек останова.
- Выберите Debug, чтобы запустить программу и остановиться в первой подходящей точке.
- Проверьте текущую строку и переменные, затем используйте Continue, Step Over, Step Into или Step Out.
- Выберите Stop, чтобы завершить сеанс отладки.
Начните с небольшого воспроизводимого примера и поставьте точку останова перед местом, где значение становится неожиданным. Серверный режим также поддерживает файлы workspace и установленные библиотеки.