區域極小值的風險
請觀察下列損失函式 loss_function() 的圖形。此函式有一個全域極小值(右側的點標示),以及多個區域極小值(包含左側點所標示者)。

在這個練習中,你會使用 keras.optimizers.SGD() 來尋找 loss_function() 的全域極小值。你會做兩次,每次替 loss_function() 使用不同的初始輸入值。首先使用變數 x_1,其初始值為 6.0。接著使用變數 x_2,其初始值為 0.3。請注意,loss_function() 已定義且可直接使用。
本練習屬於課程
Python 的 TensorFlow 入門
練習說明
- 將
opt設為隨機梯度下降最佳化器(SGD),學習率為 0.01。 - 使用損失函式
loss_function()與初始值為 6.0 的變數x_1進行最小化。 - 使用損失函式
loss_function()與初始值為 0.3 的變數x_2進行最小化。 - 以
numpy陣列形式列印x_1與x_2,並檢查兩者是否不同。這些值是演算法找到的極小值。
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
# Initialize x_1 and x_2
x_1 = Variable(6.0,float32)
x_2 = Variable(0.3,float32)
# Define the optimization operation
opt = keras.optimizers.____(learning_rate=____)
for j in range(100):
# Perform minimization using the loss function and x_1
opt.minimize(lambda: loss_function(____), var_list=[____])
# Perform minimization using the loss function and x_2
opt.minimize(lambda: ____, var_list=[____])
# Print x_1 and x_2 as numpy arrays
print(____.numpy(), ____.numpy())