波动学习曲线

时间:2019-07-24 10:14:13

标签: python tensorflow conv-neural-network

我正在训练CNN模型,这是代码。

model = tf.keras.models.Sequential([
    tf.keras.layers.Conv2D(16, (3,3), activation='relu', input_shape=(300, 300,3)),
    tf.keras.layers.MaxPooling2D(2, 2),
    tf.keras.layers.Conv2D(32, (3,3), activation='relu'),
    tf.keras.layers.MaxPooling2D(2, 2),
    tf.keras.layers.Conv2D(32, (3,3), activation='relu'),
    tf.keras.layers.MaxPooling2D(2, 2),
    tf.keras.layers.Conv2D(64, (3,3), activation='relu'),
    tf.keras.layers.MaxPooling2D(2,2),
    tf.keras.layers.Flatten(input_shape=(300, 300)),
    tf.keras.layers.Dense(512, activation=tf.nn.relu),
    tf.keras.layers.Dense(256, activation=tf.nn.relu),
    tf.keras.layers.Dense(64, activation=tf.nn.relu),
    tf.keras.layers.Dense(1, activation='linear')
])

我正在以0.00003的学习率使用Adam,并且训练了100个纪元。

但是,验证的10个时期开始在0.16和0.22之间波动。 (我不能使用提早停止,因为每次我重试训练后,随机次数都达到了最小值。)

此学习曲线是否正常?我该怎么做才能改善它?

curve

1 个答案:

答案 0 :(得分:2)

是的,这很正常,不需要担心,但是对于将来,我建议对图表进行平滑处理,这将帮助您更好地了解正在发生的事情。例如,看一下我从张量板捕获的这张图

enter image description here

透明图带有初始值,而较暗的图是平滑的图。平滑的图表明,该模型非常偶然且缓慢地将损失最小化,但仍将其最小化。

有时查看平滑的图形可以帮助更好地识别模型的训练。