事情的起因是这样,训练了一个模型发现Loss一直下不去,看了loss曲线以为收敛了。结果在测试数据上一塌糊涂,再跑去训练集上跑测试,结果当然比测试的好,但是很明显看出来没有训练好,因为有太过的FP。
耐心的翻了一下原始paper,发现用的learningrate 不一样,原因是原始paper是没有用Pretrain模型,而自己用了vgg pretrain 模型。paper:learning rate = 1e-3.自己是learning rate = 1e-4
一开始觉得没有错呀,如果从随机开始训练是需要一个大一些的learning rate, 如果只是finetune是需要一个小一些的learning rate,让模型更新的步子迈的小一些。看来这个不是问题的根本。然后看到自己写的那tf.train.exponential_decay。 这个是一个调节Leaning rate的一个函数
learning_rate = tf.train.exponential_decay(FLAGS.learning_rate, global_step, decay_steps=50, decay_rate

在训练深度学习模型时遇到损失(loss)无法有效下降的问题,发现是学习率设置不当。原始论文中学习率为1e-3,而预训练模型使用的是1e-4。尝试使用tf.train.exponential_decay动态调整学习率,该函数根据全局步数(global_step)和衰减步数(decay_steps)按特定衰减率(decay_rate)递减学习率。原来设置的decay_steps可能导致学习率在需要调整时未及时变化。解决方案是根据每个epoch动态调整decay_steps,以更早地适应数据集的需求。
最低0.47元/天 解锁文章
1405

被折叠的 条评论
为什么被折叠?



