2024-07-11
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Questo frammento di codice mostra come inizializzare i pesi di una rete neurale utilizzando PyTorch, utilizzando la distribuzione normale troncata. Una distribuzione normale troncata significa che i valori generati vengono troncati entro un certo intervallo per evitare valori estremi.usato quitorch.fmod
Come soluzione alternativa per ottenere questo effetto.
La distribuzione normale troncata è una modifica della distribuzione normale che garantisce che i valori generati rientrino in un determinato intervallo. Nello specifico,torch.fmod
La funzione restituisce il resto del tensore di input diviso per 2 (ovvero, in modo tale che il valore risultante sia compreso tra -2 e 2).
Nel codice, i quattro tensori di peso sono calcolati secondo diverse deviazioni standard (init_sd_first
, init_sd_middle
, init_sd_last
) è generato da una distribuzione normale troncata. Le dimensioni specifiche sono:
(x_dim, width n_double)
(width, width n_double)
(width, 1)
Questi tensori di peso sono generati come segue:
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)
]