训练损失先减少后增加

时间:2018-09-11 07:26:27

标签: python pytorch loss-function

我使用Adam训练了LSTM-MDN模型,训练损失首先减少,但是在服务器数百个历元之后,训练损失增加了并且高于初始值。然后我从损失最低的位置重新训练,并将学习率降低了10倍(从1e-3降低到1e-4)。

首先,培训损失减少了,后来又增加了。我最初以为代码中存在一些错误,但没有发现任何错误。然后我用SGD(momentum = 0)代替了亚当,训练损失没有增加,但是收敛到一个相对较大的值,该值高于亚当的损失,所以我认为亚当有问题。

我从未找到原因,希望有人能帮助我找到原因。 损失(adam)

enter image description here

损失功能

def mdn_loss_function(out_pi, out_sigma, out_mu, y):
    y = y.view(-1, SEQUENCE, 1, LATENT_VEC)
    result = Normal(loc=out_mu, scale=out_sigma)
    result = torch.exp(result.log_prob(y))
    result = torch.sum(result * out_pi, dim=2)
    result = -torch.log(EPSILON + result)
    return torch.mean(result)   

0 个答案:

没有答案