Pytorch: ガンベルノイズ

作成日 2017年01月30日  ·  3コメント  ·  ソース: pytorch/pytorch

やあ、

ここのようにガンベルノイズを追加しようとしましたが、成功しませんでした。
いくつかのモジュールがまだ欠落しているように見えます(たとえば、nn.Uniform()などの基本的な変数関数)、または私は間違っていますか? 次の行など、pytorchにどのように実装しますか?

`` `-ノイズの作成εサンプルモジュール
ローカルnoiseModule = nn.Sequential()
no iseModule:add (nn.Uniform(0、1))-U(0、1)からのサンプル
-均一サンプルをガンベルサンプルに変換します
no iseModule:add (nn.AddConstant(1e-9、true))-数値安定性を改善します
iseModule:add (nn.Log())はありません
iseModule:add (nn.MulConstant(-1、true))はありません
no iseModule:add (nn.AddConstant(1e-9、true))-数値安定性を改善します
iseModule:add (nn.Log())はありません
iseModule:add (nn.MulConstant(-1、true))はありません

-サンプラーを作成q(z)= G(z)= softmax((log(π)+ε)/τ)(再パラメーター化のトリック)
ローカルサンプラー= nn.Sequential()
ローカルsamplerInternal = nn.ConcatTable()
サンプルrInternal:add (nn.Identity())-正規化されていない対数確率log(π)
サンプルrInternal:add (noiseModule)-ノイズの作成ε
sampler:add (samplerInternal)
サンプラー:追加(nn.CAddTable())
self.temperature = nn.MulConstant(1 / self.tau、true)-softmaxの温度τ
サンプラー:追加(自己温度)
sampler:add (nn.View(-1、self.k))-kを超えるサイズに変更
サンプラー:追加(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 評価