【问题标题】:What does Tensorflow's CyclicalLearningRate scale_fn argument mean?Tensorflow 的 CyclicalLearningRate scale_fn 参数是什么意思?
【发布时间】:2021-05-23 06:51:01
【问题描述】:

在 tensorflow 的 CyclicalLearningRate 的文档中,有一个名为 scale_fn 的参数。

根据文档,scale_fn

一个函数。循环中应用的调度函数

但是这个解释不是很清楚。 这个函数接受什么参数,它应该输出什么? 更具体地说,如何使用它? 使用CyclicalLearningRate 需要它,但我找不到关于如何使用它的全面说明。

【问题讨论】:

    标签: python tensorflow machine-learning deep-learning


    【解决方案1】:

    你是对的,documentation 在它的使用上并不是很有启发性。可以在Super Convergence with Cyclical Learning Rates in TensorFlow 中找到更好的解释和示例;引用:

    from tensorflow_addons.optimizers import CyclicalLearningRate
    
    cyclical_learning_rate = CyclicalLearningRate( 
      initial_learning_rate=3e-7,  maximal_learning_rate=3e-5, 
      step_size=2360,  scale_fn=lambda x: 1 / (2.0 ** (x - 1)), 
      scale_mode='cycle')
    

    缩放功能

    Scale 函数是控制从 初始学习率到最大学习率并返回 初始学习率。在 [Smith 的] 论文中,这是三角形之一, 三角形 2 或指数范围。在我自己的模型实验中 对于生成图像(例如超分辨率),我发现 三角形 2 最有效。

    三角形:没有幅度缩放的基本三角形循环:

    lambda x: 1.0
    

    三角形 2:缩放初始幅度的基本三角形循环 每个周期减半:

    lambda x: 1 / (2.0 ** (x — 1))
    

    指数范围:将初始幅度按 gamma 比例缩放到 每个循环的循环迭代的功率:

    lambda x: gamma ** x
    

    还有FWIW,作者也指出:

    我认为,这些参数可能缺乏明确性是 TensorFlow 学习率计划没有得到广泛使用的原因之一。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-01
      • 1970-01-01
      • 2013-07-07
      • 2020-12-16
      • 1970-01-01
      相关资源
      最近更新 更多