损失图和确定其是否收敛的标准

时间:2016-12-31 16:22:18

标签: tensorflow deep-learning keras

我一直在使用tensorflow作为后端运行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

1 个答案:

答案 0 :(得分:0)

它正在收敛 - 初始收敛很快,然后它减慢 - 这是正常的,它可以减慢很多并且仍然有意义地改善。 60个时期可能会或可能不会很长,具体取决于您的网络中的参数数量和培训数据量。在您决定融合之前,您希望在大量时期内基本没有下降趋势。

一个非常好的经验法则可能类似于“自从看到最低损失后的时期数量>时期总数/ 4”。

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