2016-12-31 158 views
0

我一直在运行张量流作为后端的keras u-net实现。在这个实验中,我运行了60个时代。损失情节如下所示,我可以假设程序已经收敛了吗?在我看来,损失没有显着变化。损失情况和确定是否收敛的标准

这是与定义优化器和启动培训过程相关的代码。

optimizer = SGD(lr=0.001, momentum=0.9, decay=0.0005, nesterov=False) 
    autoencoder.compile(loss=customized_loss, optimizer=optimizer, metrics= [customized_dice]) 
    nb_epoch = 60 
    batch_size = 32 
    model.fit(imgs_train, imgs_mask_train, batch_size=batch_size, nb_epoch=nb_epoch, verbose=1,callbacks=[model_checkpoint]) 

enter image description here

+0

这是培训还是验证损失?如果验证,这似乎甚至没有收敛,你需要运行更长的时间。也请尝试更高的学习率 –

+0

嗨,我认为这是训练损失。我包含了与定义优化器并启动培训相关的代码。如果您有任何意见,请告诉我。谢谢。 – user297850

+0

我们需要知道哪些损失可以帮助您。在我看来,这是您模型中的成本损失。这有助于你确定信心,而不是收敛或准确。您可能有过度拟合,对此限制,您需要绘制培训和验证损失,而不是成本。 – Feras

回答

0

它融合 - 初始收敛速度快,那么它会减慢 - 这是正常的,它可以减缓很多,还是有意义的改善。取决于您网络中的参数数量和训练数据量,60个时期可能会或可能不会很长。在您决定收敛之前,您基本上不需要在大量时代中出现下降趋势。

一个相当不错的经验法则可能类似于“自最低损失发生以来的历元数量”>“历元总数/ 4”。

另一个问题是它是否过度训练。你需要看看验证损失。按住训练数据的1/10或1/5,并将其用于验证,当验证丢失开始持续增加时,则是过度训练。

相关问题