开始使用免费开始使用

避免陷入局部极小值

上一题展示了模型多么容易陷入局部极小值。我们在单变量的简单优化问题中,即使只需先经过局部极小值,梯度下降也未能达到全局最小值。避免这一问题的一个方法是使用动量(momentum),它可以帮助优化器冲破局部极小值。本题将继续使用上一题的损失函数,已定义为 loss_function() 并可直接使用。

该图展示了一个含多个局部极小值与一个全局最小值的单变量函数。

tensorflow 中有多个优化器带有动量参数,例如 SGDRMSprop。本练习将使用 RMSprop。请注意,这次 x_1x_2 被初始化为相同的值。此外,keras.optimizers.RMSprop() 已从 tensorflow 为您导入。

本练习是课程的一部分

Python 中的 TensorFlow 入门

查看课程

练习说明

  • opt_1 的学习率设为 0.01,动量设为 0.99。
  • opt_2 设为使用均方根传播(RMSprop)优化器,学习率为 0.01,动量为 0.00。
  • opt_2 定义最小化操作。
  • numpy 数组形式打印 x_1x_2

交互式实操练习

通过完成这段示例代码来试试这个练习。

# Initialize x_1 and x_2
x_1 = Variable(0.05,float32)
x_2 = Variable(0.05,float32)

# Define the optimization operation for opt_1 and opt_2
opt_1 = keras.optimizers.RMSprop(learning_rate=____, momentum=____)
opt_2 = ____

for j in range(100):
	opt_1.minimize(lambda: loss_function(x_1), var_list=[x_1])
    # Define the minimization operation for opt_2
	____

# Print x_1 and x_2 as numpy arrays
print(____, ____)
编辑并运行代码