用于减少0.2->模式中的小数的算法。 0.1-> 0.09 - > 0.08 - > ... - > 0.02 - > 0.01 - > 0.009

时间:2018-04-27 19:57:16

标签: python algorithm decimal

我试图自动化神经网络学习率的衰减。如果神经网络的损失不会减少 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或更低。

2 个答案:

答案 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......................................