我试图自动化神经网络学习率的衰减。如果神经网络的损失不会减少 n 时期,我想写一个被调用的函数。
此功能将当前学习速率作为参数,然后将其减少0.1,0.01,0.001等,具体取决于其当前值(当前具有的有效数字的数量)。这将使衰减图案为0.2-> 0。 0.1-> 0.09 - > 0.08 - > ... - > 0.02 - > 0.01 - > 0.009
作为指导原则,我目前的学习率如下所示,从0.1:
开始def decayLearningRate(learningRate):
return learningRate ** 2
然而,这些跳跃太大了。什么是实现我提议的优雅方式?
注意:学习率始终为0.1或更低。
答案 0 :(得分:3)
我在这个问题上打电话给x-y problem
。在线查看典型的学习率衰减模式;你正在做的事情并不顺利。在10 * N个时期的每个序列中(其中N
是你的急躁区间),你从10%的衰变开始,然后将衰减加速到11%,12.5%,...... 50%,此时你重置为10%。
相反,只需选择适合您应用的比例。传统上,各种应用程序使用了从10%到3(甚至10)的任何东西:
return learning_rate * 0.90
return learning_rate / 3
return learning_rate /10
与所有未指定的应用程序一样,您必须尝试使用N
和您使用的因素,以查看最适合您的应用程序。
答案 1 :(得分:2)
我不太确定它是 优雅的解决方案,但它是实现任务的一种方式:
CASE
输出:
Some text.
* Heading
| The first topic.
| Another topic which is very verbose and spans multiple lines ad infinitum.
Topic continued......................................