Κοινή χρήση τεχνολογίας

Το [PyTorch] torch.fmod χρησιμοποιεί περικομμένη κανονική κατανομή για να αρχικοποιήσει τα βάρη του νευρωνικού δικτύου

2024-07-11

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Αυτό το απόσπασμα κώδικα δείχνει πώς να αρχικοποιήσετε τα βάρη ενός νευρωνικού δικτύου χρησιμοποιώντας το PyTorch, χρησιμοποιώντας την περικομμένη κανονική κατανομή. Μια περικομμένη κανονική κατανομή σημαίνει ότι οι παραγόμενες τιμές περικόπτονται εντός ενός εύρους για την αποφυγή ακραίων τιμών.χρησιμοποιείται εδώtorch.fmod Ως λύση για την επίτευξη αυτού του αποτελέσματος.

Λεπτομερής εξήγηση

1. Περικομμένη κανονική κατανομή

Η περικομμένη κανονική κατανομή είναι μια τροποποίηση της κανονικής κατανομής που διασφαλίζει ότι οι παραγόμενες τιμές εμπίπτουν σε ένα συγκεκριμένο εύρος. ΕΙΔΙΚΑ,torch.fmod Η συνάρτηση επιστρέφει το υπόλοιπο του τανυστή εισόδου διαιρεμένο με το 2 (δηλαδή, έτσι ώστε η τιμή που προκύπτει να είναι μεταξύ -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)
]