Все задачи
Легко Решено: 0 Процент решений: 0%

Производные функций активации

Вычислите производную sigmoid, ReLU, Leaky ReLU или tanh в каждой точке — наклоны, которые нужны обратному распространению.

Чему вы научитесь

  • Вычислять наклоны распространённых активаций
  • Переиспользовать выход сигмоиды для её производной
  • Готовить части, нужные обратному распространению

Условие

Обратное распространение ошибки умножает градиенты на производную каждой функции активации. Реализуйте activation_derivative(name, values) и верните производную в каждой точке:

nameПроизводная
"sigmoid"s × (1 - s), где s = 1 / (1 + e^(-x))
"relu"1, если x > 0, иначе 0
"leaky_relu"1, если x > 0, иначе 0.01
"tanh"1 - tanh(x)²

Входные данные

name: Одно из "sigmoid", "relu", "leaky_relu" или "tanh".

values: Входы x функции активации.

Выходные данные

Верните производную в каждой точке в том же порядке.

Ограничения

1 ≤ длина ≤ 1 000

-50 ≤ каждое значение ≤ 50

Примеры

Пример 1
Ввод:
name = "sigmoid"
values = [0.0, 2.0]

Ожидаемый вывод:
expected = [0.25, 0.104994]
Ввод:
std::string name = "sigmoid";
std::vector<double> values = {0.0, 2.0};

Ожидаемый вывод:
std::vector<double> expected = {0.25, 0.104994};
Ввод:
string name = "sigmoid";
double[] values = new double[] {0.0, 2.0};

Ожидаемый вывод:
double[] expected = new double[] {0.25, 0.104994};

Пояснение

В точке 0 s = 0.5, и наклон равен 0.5 × 0.5 = 0.25 — самая крутая точка сигмоиды. В точке 2 s ≈ 0.880797, и наклон примерно 0.104994.

Пример 2
Ввод:
name = "relu"
values = [-3.0, 0.0, 4.5]

Ожидаемый вывод:
expected = [0.0, 0.0, 1.0]
Ввод:
std::string name = "relu";
std::vector<double> values = {-3.0, 0.0, 4.5};

Ожидаемый вывод:
std::vector<double> expected = {0.0, 0.0, 1.0};
Ввод:
string name = "relu";
double[] values = new double[] {-3.0, 0.0, 4.5};

Ожидаемый вывод:
double[] expected = new double[] {0.0, 0.0, 1.0};

Пояснение

ReLU плоская при x ≤ 0 (наклон 0) и имеет наклон 1 при x > 0, поэтому результат [0, 0, 1].

Ссылки

Это задание адаптировано для CodeUtility. Следуйте условию и ограничениям выше.

Учитесь у других

Решения сообщества

Пока нет опубликованных решений. Решите задание, чтобы поделиться первым.