1

我试图通过将学习率乘以一个常数因子来找到最佳学习率,然后他们在不同的学习率上训练模型。我需要在损失开始再次增加的转折点选择学习率。为此,我需要可视化学习率与损失图。我该怎么做呢。

改变速率的方法是

import math
l_rates = []
def schedule(epoch , lr):
  lr_new = lr * math.exp(math.log10(math.pow(10,6))/500)
  l_rates.append(lr_new)
  return lr_new

lr_scheduler_cb = keras.callbacks.LearningRateScheduler(schedule)

learning_rate_history = model1.fit(train_x , train_y , epochs=500 ,
                     callbacks=[lr_scheduler_cb])
4

1 回答 1

0

您提出问题的方式表明您想尝试具有恒定学习率的不同模型以找到最佳模型,但您正在提高同一模型的学习率。由于多种原因,这很可能是一个坏主意。

  1. 您不是用不同的学习率测试模型,而是测试如果每个时期都增加学习率会发生什么。

  2. 在监督学习中,当你接近最优时降低学习率是很常见的,并且需要采取更小的步骤,而不是更大的步骤。

对于实际绘图,我建议使用 matplotlib:

import numpy as np
import matplotlib.pyplot as plt

# example values
l_rates = np.array([1e-5, 1e-4, 1e-3, 1e-2, 1e-1])
learning_rate_history = np.random.random(size=5)

plt.plot(l_rates, learning_rate_history)
plt.show();

附带说明一下,您正在进行网格搜索,而随机搜索更好

于 2021-09-04T17:31:18.770 回答