tensorflow - 损失图以及判断是否收敛的标准

标签 tensorflow deep-learning keras

我一直在运行一个以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])

enter image description here

最佳答案

它正在收敛 - 初始收敛很快,然后减慢 - 这是正常的,它可以减慢很多,但仍然有意义地改进。六十个时期可能很长,也可能不太长,具体取决于网络中参数的数量和训练数据量。在决定收敛之前,您希望在相当长的时期内基本上没有下降趋势。

一个很好的经验法则可能是“自看到最低损失以来的历元数 > 历元总数/4”。

另一个问题是是否训练过度。您需要考虑这一点的验证损失。保留 1/10 或 1/5 的训练数据并将其用于验证,当验证损失开始持续增加时,说明您训练过度。

关于tensorflow - 损失图以及判断是否收敛的标准,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41410007/

相关文章:

python - Keras ANN 的 Pandas 数据框形状不正确

python - tf.summary.image 似乎不适用于估计器预测

python - 使用 Tensorflow 在 Windows 10 上为 ML-Agents 设置 Unity3D 机器学习

python - 是否有可能在 Keras 中实现一个最大池化层,它提供给定池大小的最大 n 值?

python - 在 Tensorflow 中使用预训练的 inception_resnet_v2

machine-learning - 如何从深度模型中获取输入图像的特征向量(softmax之前的N-1层的输出)?

keras - LSTM 时间序列产生偏移预测?

python - 如何在 tfds.load() 之后在 TensorFlow 2.0 中应用数据增强

tensorflow - 如何在 Keras 中为图像分割加载图像掩码(标签)

python - 如何制定更好的多次读数据库策略?