2024-07-11
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Dieser Codeausschnitt zeigt, wie die Gewichte eines neuronalen Netzwerks mit PyTorch unter Verwendung der abgeschnittenen Normalverteilung initialisiert werden. Eine abgeschnittene Normalverteilung bedeutet, dass die generierten Werte innerhalb eines Bereichs abgeschnitten werden, um Extremwerte zu verhindern.hier verwendettorch.fmod
Als Workaround, um diesen Effekt zu erzielen.
Die abgeschnittene Normalverteilung ist eine Modifikation der Normalverteilung, die sicherstellt, dass die generierten Werte in einen bestimmten Bereich fallen. Speziell,torch.fmod
Die Funktion gibt den Rest des Eingabetensors dividiert durch 2 zurück (d. h. so, dass der resultierende Wert zwischen -2 und 2 liegt).
Im Code werden die vier Gewichtungstensoren nach unterschiedlichen Standardabweichungen berechnet (init_sd_first
, init_sd_middle
, init_sd_last
) wird aus einer abgeschnittenen Normalverteilung generiert. Die spezifischen Abmessungen sind:
(x_dim, width n_double)
(width, width n_double)
(width, 1)
Diese Gewichtstensoren werden wie folgt generiert:
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)
]