2024-07-11
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
В этом фрагменте кода показано, как инициализировать веса нейронной сети с помощью PyTorch, используя усеченное нормальное распределение. Усеченное нормальное распределение означает, что сгенерированные значения усекаются в пределах диапазона, чтобы предотвратить экстремальные значения.используется здесьtorch.fmod
В качестве обходного пути для достижения этого эффекта.
Усеченное нормальное распределение — это модификация нормального распределения, которая гарантирует, что сгенерированные значения попадают в определенный диапазон. Конкретно,torch.fmod
Функция возвращает остаток входного тензора, разделенный на 2 (т. е. такой, что результирующее значение находится в диапазоне от -2 до 2).
В коде четыре весовых тензора рассчитываются в соответствии с различными стандартными отклонениями (init_sd_first
, init_sd_middle
, init_sd_last
) генерируется из усеченного нормального распределения. Конкретные размеры:
(x_dim, width n_double)
(width, width n_double)
(width, 1)
Эти весовые тензоры генерируются следующим образом:
initial_weights = [
torch.fmod(torch.normal(0, init_sd_first, size=(x_dim, width n_double)), 2),
torch.fmod(torch.normal(0, init_sd_middle, size=(width, width n_double)), 2),
torch.fmod(torch.normal(0, init_sd_middle, size=(width, width n_double)), 2),
torch.fmod(torch.normal(0, init_sd_last, size=(width, 1)), 2)
]