Pytorch: ضوضاء غامبل

تم إنشاؤها على ٣٠ يناير ٢٠١٧  ·  3تعليقات  ·  مصدر: pytorch/pytorch

أهلا،

كنت أحاول إضافة ضجيج Gumbel كما هو موضح هنا ، لكن لم ينجح.
يبدو أن العديد من الوحدات النمطية لا تزال مفقودة (على سبيل المثال ، وظائف المتغير الأساسية مثل nn.Uniform ()) ، أم أنني مخطئ؟ كيف ستنفذ في pytorch ، على سبيل المثال الصفوف التالية:

"- إنشاء وحدة عينة ضوضاء
وحدة الضوضاء المحلية = nn.Sequential ()
no iseModule: add (n.Uniform (0، 1)) - عينة من U (0، 1)
- تحويل عينة موحدة لعينة Gumbel
no iseModule: add (nn.AddConstant (1e-9، true)) - تحسين الاستقرار العددي
لا iseModule: add (nn.Log ())
no iseModule: add (nn.MulConstant (-1 ، صحيح))
no iseModule: add (nn.AddConstant (1e-9، true)) - تحسين الاستقرار العددي
لا iseModule: add (nn.Log ())
no iseModule: add (nn.MulConstant (-1 ، صحيح))

- إنشاء جهاز أخذ العينات q (z) = G (z) = softmax ((log (π) + ε) / τ) (خدعة إعادة تحديد المعايير)
العينات المحلية = nn.Sequential ()
محلي samplerInternal = nn.ConcatTable ()
نموذج r داخلي: إضافة (nn.Identity ()) - سجل احتمالات السجل غير الطبيعي (π)
نموذج r داخلي: إضافة (NoiseModule) - إنشاء ضوضاء ε
sampler : add (samplerInternal)
sampler : add (nn.CAddTable ())
self.temperature = nn.MulConstant (1 / self.tau، true) - درجة الحرارة τ لـ softmax
العيّنة: add (self.temperature)
sampler : add (nn.View (-1، self.k)) - قم بتغيير الحجم للعمل على k
أخذ العينات: add (nn.SoftMax ())
sampler : add (nn.View [-1، self.N * self.k)) - تغيير الحجم للخلف
""

التعليق الأكثر فائدة

ها أنت ذا. أكثر قابلية للقراءة ولا تتطلب وحدات نمطية:

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)

نحن نستخدم GitHub لتقارير الأخطاء فقط ، إذا كانت لديك أسئلة ، فيرجى نشرها على منتدياتنا .

ال 3 كومينتر

ها أنت ذا. أكثر قابلية للقراءة ولا تتطلب وحدات نمطية:

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)

نحن نستخدم GitHub لتقارير الأخطاء فقط ، إذا كانت لديك أسئلة ، فيرجى نشرها على منتدياتنا .

شكرا على الإجابة السريعة! ، وبالتأكيد ، سأكتب في المنتدى في المرة القادمة.

شكرا على الاجابة!

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات