【发布时间】:2016-12-31 16:22:18
【问题描述】:
我一直在运行一个以 tensorflow 作为后端的 keras u-net 实现。在实验中,我运行了 60 个 epoch。损失图如下所示,我可以假设程序已经收敛吗?在我看来,损失没有显着变化。
这是与定义优化器和启动训练过程相关的代码。
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])
【问题讨论】:
-
这是训练损失还是验证损失?如果验证,这似乎甚至没有接近收敛,你需要运行更长的时间。也可以尝试更高的学习率
-
嗨,我认为是训练损失。我包含了与定义优化器和启动培训相关的代码。如果您有任何cmets,请告诉我。谢谢。
-
我们需要知道这是哪个损失来帮助您。在我看来,这是您模型中的成本损失。这有助于您确定置信度,而不是收敛或准确性。您可能过度拟合,在此限制下您需要绘制训练和验证损失而不是成本。
-
嗨 Feras,我使用的是github.com/jocicmarko/ultrasound-nerve-segmentation 讨论的 dice_coefficient。我使用 segnet 而不是 u-net。此外,如何获得训练损失。训练输出看起来像这样 Epoch 2/60 4375/4375 [==============================] - 821s - loss: 0.7062- acc: 0.9731 这个损失是训练损失还是成本损失?
-
嗨 Feras,您能否详细说明一下训练损失。在 Keras 文档中,我只看到打印成本(损失)、准确性和 val_loss 的选项。我没有看到专门命名为训练损失的项目。谢谢。
标签: tensorflow deep-learning keras