- Компиляторы
-
Обучение
Изучить Python Запускаемые примеры, NumPy, pandas и другое Изучить ИИНейросети, ML и LLM с нуля Изучить C и C++ Указатели, память, STL и современный C++ Изучить C#Основы C#, ООП, LINQ, async и упражнения .NET Изучить MatplotlibЛинейные, столбчатые, точечные и круговые диаграммы с визуализацией Алгоритмы на Python Поиск, сортировка, рекурсия и визуализация O(n) Алгоритмы на C и C++ Сравнение реализаций на C и C++ Программирование для детей Учись программировать, играя!
- ЗадачиНовое
- УчителямНовое
- Обновления
- Угостить кофе
XOR (исключающее ИЛИ) — классическая задача, которую не может решить один нейрон, но может решить сеть с одним скрытым слоем. Обучите сеть с 2 входами, 2 скрытыми нейронами и 1 выходом, все сигмоидные (σ(z) = 1 / (1 + e^(-z))), с функцией потерь L = (y - target)².
Обучающие данные, которые в каждой эпохе всегда используются в этом порядке:
| вход | target |
|---|---|
| [0, 0] | 0 |
| [0, 1] | 1 |
| [1, 0] | 1 |
| [1, 1] | 0 |
Для каждого примера:
- Прямой проход: a_j = σ(x₁ × hidden_weights[j][0] + x₂ × hidden_weights[j][1] + hidden_biases[j]), y = σ(a₁ × output_weights[0] + a₂ × output_weights[1] + output_bias)
- delta_out = 2 × (y - target) × y × (1 - y) и delta_j = delta_out × output_weights[j] × a_j × (1 - a_j), с весами до обновления на этом примере
- Обновите каждый параметр со скоростью обучения lr: output_weights[j] -= lr × delta_out × a_j, output_bias -= lr × delta_out, hidden_weights[j][i] -= lr × delta_j × x_i, hidden_biases[j] -= lr × delta_j
Реализуйте train_xor(hidden_weights, hidden_biases, output_weights, output_bias, learning_rate, epochs).
Выходные данные
После обучения верните предсказания сети y для входов [0, 0], [0, 1], [1, 0] и [1, 1] в этом порядке.
Ограничения
0 ≤ epochs ≤ 5000
0 < learning_rate ≤ 5
-2 ≤ каждый начальный вес и смещение ≤ 2
Примеры
Пример 1
Ввод:
hidden_weights = [
[0.2, 0.8],
[0.9, -0.7]
]
hidden_biases = [0.0, 0.3]
output_weights = [-0.6, 0.4]
output_bias = 0.0
learning_rate = 1.5
epochs = 0
Ожидаемый вывод:
[0.482451, 0.436972, 0.494378, 0.452729]
Пояснение
При 0 эпох ничего не обучается, поэтому результат — это просто прямой проход с начальными весами: примерно [0.482, 0.437, 0.494, 0.453]. Необученная сеть даёт почти одинаковый ответ на любой вход.
Пример 2
Ввод:
hidden_weights = [
[0.2, 0.8],
[0.9, -0.7]
]
hidden_biases = [0.0, 0.3]
output_weights = [-0.6, 0.4]
output_bias = 0.0
learning_rate = 1.5
epochs = 2000
Ожидаемый вывод:
[0.015727, 0.982119, 0.985515, 0.013682]
Пояснение
После 2000 эпох предсказания примерно равны [0.016, 0.982, 0.986, 0.014]: низкие для [0, 0] и [1, 1], высокие для [0, 1] и [1, 0]. Сеть выучила XOR.
Ссылки
-
Пример 1 Не запущеноВвод:
hidden_weights = [ [0.2, 0.8], [0.9, -0.7] ] hidden_biases = [0.0, 0.3] output_weights = [-0.6, 0.4] output_bias = 0.0 learning_rate = 1.5 epochs = 0Ожидаемый вывод:[0.482451, 0.436972, 0.494378, 0.452729]Ваш вывод -
Пример 2 Не запущеноВвод:
hidden_weights = [ [0.2, 0.8], [0.9, -0.7] ] hidden_biases = [0.0, 0.3] output_weights = [-0.6, 0.4] output_bias = 0.0 learning_rate = 1.5 epochs = 2000Ожидаемый вывод:[0.015727, 0.982119, 0.985515, 0.013682]Ваш вывод
При отправке также выполняются ещё 4 скрытых теста. Если код не пройдёт один из них, вы увидите этот тест. Решите задачу, чтобы увидеть все.
Онлайн-компилятор Java (Джава)
Пишите, компилируйте и запускайте код на Java прямо в браузере - на русском языке, без установки JDK и IDE. Несколько классов и файлов, сохранение проектов и совместная работа.
🚀 260,408 всего выполнений (5,854 в этом месяце)
Практикуйте Java на задачах
Решайте задачи прямо в редакторе: запускайте тесты, отправляйте решение и получайте AI-рецензию.
☕ Онлайн-компилятор Java
Онлайн-компилятор Java от CodeUtility позволяет писать и запускать программы на Джаве прямо в браузере - на русском языке, без установки JDK и IDE. Доступны версии Java 8, 11, 17, 21 и последняя.
Код компилирует настоящий javac и выполняет обычная среда Java на сервере, поэтому классы, методы
и ввод через Scanner ведут себя так же, как на вашем компьютере.
Удобно, чтобы практиковать ООП, решать учебные задачи, готовиться к собеседованиям или быстро проверить фрагмент кода с любого устройства.
Больше, чем просто запуск кода
В одном редакторе есть всё для работы: несколько файлов, изолированный терминал, библиотеки для выбранной версии, сохранение проектов, общий доступ по ссылке и совместная работа в реальном времени.
Как пользоваться редактором
Выберите версию языка, откройте или создайте файл, напишите код и нажмите «Запустить». Результат появится в терминале. После входа в аккаунт можно хранить файлы в рабочем пространстве, устанавливать библиотеки и работать над кодом вместе с другими.
- Выберите версию и отредактируйте текущий файл или откройте другой файл рабочего пространства.
- Запустите код, при необходимости введите данные в терминале и просмотрите сохранённую историю запусков.
- Используйте библиотеки, инструменты рабочего пространства, общий доступ и чат, когда для задачи требуется несколько фрагментов кода.
💡 Основы Java и примеры, которые можно попробовать выше
1. Объявление переменных и констант
В Java необходимо указывать тип каждой переменной. Используйте final для констант.
int age = 30;
double pi = 3.14159;
char grade = 'A';
String name = "Alice";
boolean isActive = true;
// Константы
final int MAX_USERS = 100;
final String COMPANY = "CodeUtility";
2. Условные операторы (if / switch)
Используйте if, else if и switch для управления потоком выполнения.
int x = 2;
if (x == 1) {
System.out.println("Один");
} else if (x == 2) {
System.out.println("Два");
} else {
System.out.println("Другое");
}
switch (x) {
case 1:
System.out.println("Один");
break;
case 2:
System.out.println("Два");
break;
default:
System.out.println("Другое");
}
3. Циклы
Используйте for, while и do-while для итераций.
for (int i = 0; i < 3; i++) {
System.out.println(i);
}
int n = 3;
while (n > 0) {
System.out.println(n);
n--;
}
4. Массивы
Массивы хранят последовательности фиксированного размера одного типа.
int[] numbers = {10, 20, 30};
System.out.println(numbers[1]);
5. Работа с ArrayList
Используйте ArrayList для списков динамического размера.
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. Ввод/вывод в консоли
Используйте Scanner для ввода и System.out для вывода.
import java.util.Scanner;
Scanner scanner = new Scanner(System.in);
System.out.print("Введите ваше имя: ");
String name = scanner.nextLine();
System.out.println("Привет, " + name);
7. Функции
Определяйте методы с типами возвращаемых значений и параметрами.
public static int add(int a, int b) {
return a + b;
}
System.out.println(add(3, 4));
8. HashMap
Используйте HashMap для хранения пар ключ-значение.
import java.util.HashMap;
HashMap<String, Integer> ages = new HashMap<>();
ages.put("Alice", 30);
System.out.println(ages.get("Alice"));
9. Обработка исключений
Используйте try и catch для обработки исключений времени выполнения.
try {
throw new Exception("Что-то пошло не так");
} catch (Exception e) {
System.out.println(e.getMessage());
}
10. Файловый ввод/вывод
Используйте Files и Paths из java.nio.file для работы с файлами.
import java.nio.file.*;
import java.io.IOException;
Files.writeString(Paths.get("file.txt"), "Привет файл");
String content = Files.readString(Paths.get("file.txt"));
System.out.println(content);
11. Работа со строками
Строки в Java поддерживают множество методов, таких как length(), substring() и contains().
String text = "Hello World";
System.out.println(text.length());
System.out.println(text.substring(0, 5));
System.out.println(text.contains("World"));
12. Классы и объекты
Java поддерживает объектно-ориентированное программирование с использованием классов и экземпляров.
class Person {
String name;
Person(String name) {
this.name = name;
}
void greet() {
System.out.println("Привет, я " + name);
}
}
Person p = new Person("Alice");
p.greet();
❓ Частые вопросы
Как запустить код на Джаве онлайн?
Напишите или вставьте код в редактор и нажмите «Запустить». Программа скомпилируется настоящим javac и выполнится на сервере, а вывод появится в терминале.
Какие версии Java доступны?
Java 8, 11, 17, 21 и последняя версия. Нужную можно выбрать в списке над редактором.
Нужно ли устанавливать JDK?
Нет. Компилятор и среда выполнения работают на сервере, вам нужен только браузер.
Можно ли использовать несколько классов и файлов?
Да. В редакторе можно создавать несколько файлов .java и запускать их как один проект.
Работает ли ввод через Scanner?
Да. Программа запрашивает данные во время работы: вводите их в терминале.
Это бесплатно?
Да. Запуск кода бесплатен и не требует регистрации. Аккаунт нужен, чтобы сохранять проекты и делиться ими.
Нужен другой язык программирования? Все онлайн-компиляторы: Python, C++, C, C#, Java и ещё 8 языков