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

Инициализация весов Xavier и He

Вычислите диапазон или стандартное отклонение для инициализации весов слоя.

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

  • Вычислять диапазоны инициализации слоя
  • Выбирать между Xavier и He
  • Понять, почему инициализация важна

Условие

Слишком большие или слишком маленькие начальные веса затрудняют обучение глубоких сетей. Два стандартных метода выбирают масштаб по размеру слоя, где fan_in — число входов, а fan_out — число выходов:

methodвозвращает
"xavier_uniform"границу √(6 / (fan_in + fan_out)), веса берутся из [-граница, граница]
"xavier_normal"стандартное отклонение √(2 / (fan_in + fan_out))
"he_uniform"границу √(6 / fan_in)
"he_normal"стандартное отклонение √(2 / fan_in)

Xavier (Glorot) подходит для слоёв с сигмоидой и tanh, He — для слоёв с ReLU.

Реализуйте init_bound(method, fan_in, fan_out).

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

method: одно из "xavier_uniform", "xavier_normal", "he_uniform" или "he_normal".

fan_in, fan_out: число входов и выходов слоя.

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

Верните границу или стандартное отклонение как дробное число.

Ограничения

1 ≤ fan_in, fan_out ≤ 100 000

Примеры

Пример 1
Ввод:
fan_in = 3
method = "xavier_uniform"
fan_out = 3

Ожидаемый вывод:
expected = 1.0
Ввод:
long long fan_in = 3;
std::string method = "xavier_uniform";
long long fan_out = 3;

Ожидаемый вывод:
double expected = 1.0;
Ввод:
long fan_in = 3;
string method = "xavier_uniform";
long fan_out = 3;

Ожидаемый вывод:
double expected = 1.0;

Пояснение

√(6 / (3 + 3)) = √1 = 1, поэтому веса берутся из [-1, 1].

Пример 2
Ввод:
fan_in = 50
method = "he_normal"
fan_out = 10

Ожидаемый вывод:
expected = 0.2
Ввод:
long long fan_in = 50;
std::string method = "he_normal";
long long fan_out = 10;

Ожидаемый вывод:
double expected = 0.2;
Ввод:
long fan_in = 50;
string method = "he_normal";
long fan_out = 10;

Ожидаемый вывод:
double expected = 0.2;

Пояснение

He использует только fan_in: √(2 / 50) = √0.04 = 0.2.

Ссылки

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

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

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

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