Berbagi teknologi

[PyTorch] torch.fmod menggunakan distribusi normal terpotong untuk menginisialisasi bobot jaringan saraf

2024-07-11

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

Cuplikan kode ini menunjukkan cara menginisialisasi bobot jaringan saraf menggunakan PyTorch, menggunakan distribusi normal terpotong. Distribusi normal terpotong berarti nilai yang dihasilkan terpotong dalam suatu rentang untuk mencegah nilai ekstrim.digunakan di sinitorch.fmod Sebagai solusi untuk mencapai efek ini.

Penjelasan detail

1. Distribusi normal terpotong

Distribusi normal terpotong merupakan modifikasi dari distribusi normal yang memastikan bahwa nilai yang dihasilkan berada dalam rentang tertentu. Secara khusus,torch.fmod Fungsi ini mengembalikan sisa tensor masukan dibagi 2 (yaitu, nilai yang dihasilkan antara -2 dan 2).

2. Inisialisasi bobot

Dalam kode tersebut, keempat tensor bobot dihitung berdasarkan deviasi standar yang berbeda (init_sd_first, init_sd_middle, init_sd_last ) dihasilkan dari distribusi normal terpotong. Dimensi spesifiknya adalah:

  • Bentuk tensor berat lapisan pertama adalah (x_dim, width n_double)
  • Bentuk kedua tensor berat lapisan tengah adalah (width, width n_double)
  • Bentuk tensor berat lapisan terakhir adalah (width, 1)

Tensor bobot ini dihasilkan sebagai berikut:

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)
]