質問内容
サンプル分布に正規分布を仮定したVAEの学習を行おうとしているのですが,Loss関数のNegative Log Likelihoodの値が負値をとってしまい学習が発散してしまいます.
考えうる原因としてどのようなものがありますか?
出来る限り多くの回答頂ければ幸いです.
実行環境
python3.6
pytorch0.4.0
実装内容
gaussian_nllをchainerからtensorに対応させる形で移植しました.
(移植内容を加筆しました)
python
1def gaussian_nll(x, mean, logvar, reduce=True): 2 x_prec = torch.exp(-logvar) 3 x_diff = x - mean 4 x_power = x_diff * x_diff * x_prec * -0.5 5 c = torch.Tensor(1).float() 6 c[0] = 2 * math.pi 7 loss = (logvar + torch.log(c)) / 2 - x_power 8 if reduce is True: 9 return torch.sum(loss) 10 else: 11 return loss
np.random.randnを使ってchainerのgaussian_nllと出力が同じかどうか検証をしました.
Encoder, Decoderは出力層の1層前から重みを共有しない1dconvで出力しています.
回答1件
あなたの回答
tips
プレビュー