Hai,
Saya sudah mencoba menambahkan suara Gumbel seperti di sini , tetapi tidak berhasil.
Sepertinya beberapa modul masih hilang (misalnya, fungsi variabel dasar seperti nn.Uniform()), atau apakah saya salah? Bagaimana Anda menerapkan di pytorch misalnya baris berikut:
``` -- Buat noise modul sampel
noiseModule lokal = nn.Sequential()
no iseModule:add (nn.Uniform(0, 1)) -- Contoh dari U(0, 1)
-- Ubah sampel seragam menjadi sampel Gumbel
no iseModule:add (nn.AddConstant(1e-9, true)) -- Meningkatkan stabilitas numerik
tidak ada iseModule:tambahkan (nn.Log())
tidak ada iseModule:add (nn.MulConstant(-1, true))
no iseModule:add (nn.AddConstant(1e-9, true)) -- Meningkatkan stabilitas numerik
tidak ada iseModule:tambahkan (nn.Log())
tidak ada iseModule:add (nn.MulConstant(-1, true))
-- Buat sampler q(z) = G(z) = softmax((log(π) + )/τ) (trik reparametrisasi)
sampler lokal = nn.Sequential()
samplerInternal lokal = nn.ConcatTable()
sample rInternal:add (nn.Identity()) -- log probabilitas yang tidak dinormalisasi log(π)
sample rInternal:add (noiseModule) -- Membuat noise
sampler: tambahkan (samplerInternal)
sampler: tambahkan (nn.CDadTable())
self.temperature = nn.MulConstant(1 / self.tau, true) -- Suhu untuk softmax
sampler: tambahkan (self.temperature)
sampler:add (nn.View(-1, self.k)) -- Ubah ukuran agar bekerja lebih dari k
sampler: tambahkan (nn.SoftMax())
sampler:add (nn.View(-1, self.N * self.k)) -- Ubah ukuran kembali
```
Ini dia. Jauh lebih mudah dibaca dan tidak diperlukan modul:
import torch.nn.functional as F
from torch.autograd import Variable
def sampler(input, tau, temperature):
noise = torch.rand(input.size())
noise.add_(1e-9).log_().neg_()
noise.add_(1e-9).log_().neg_()
noise = Variable(noise)
x = (input + noise) / tau + temperature
x = F.softmax(x.view(input.size(0), -1))
return x.view_as(input)
Kami menggunakan GitHub hanya untuk laporan bug, jika Anda memiliki pertanyaan, silakan posting di forum kami .
Terima kasih atas jawaban yang cepat!, dan tentu saja, akan menulis di forum lain kali.
Terima kasih atas jawabannya!
Komentar yang paling membantu
Ini dia. Jauh lebih mudah dibaca dan tidak diperlukan modul:
Kami menggunakan GitHub hanya untuk laporan bug, jika Anda memiliki pertanyaan, silakan posting di forum kami .