本文主要是介绍Mxnet (28): 动量(Momentum),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
执行随机梯度下降时,面对噪声时选择学习速率需要格外注意。如果学习速率下降的太快,就会过早停止,如果下降的太慢,就会导致无法得到足够的收敛,以至于噪音使我们不但远离最有解。
1. 收敛与发散问题
通过一个例子说明问题:
f ( x ) = 0.1 x 1 2 + 2 x 2 2 . f(\mathbf{x}) = 0.1 x_1^2 + 2 x_2^2. f(x)=0.1x12+2x22.
from d2l import mxnet as d2l
from mxnet import np, npx, autograd, init, gluon
from mxnet.gluon import nn
import plotly.graph_objs as go
import plotly.express as px
import pandas as pd
npx.set_np()ddef train_2d(trainer, steps=20): """优化二维目标"""# s1和s2是内部状态变量x1, x2, s1, s2 = -5, -2, 0, 0results = [[x1], [x2]]for i in range(steps):x1, x2, s1, s2 = trainer(x1, x2, s1, s2)results[0].append(x1)results[1].append(x2)return resultsdef show_trace_2d(f, results): """2D可视化"""fig = go.Figure()y_max =max(results[1]) +1 if 2 < max(results[1]) < 6 else 3x1, x2 = np.meshgrid(np.arange(-5.5, 1.0, 0.1), np.arange(-3.5, y_max, 0.1))fig.add_trace(go.Contour(x=x1[0].tolist(), y=x2.T[0].tolist(), z=f(x1, x2).tolist(),showscale=False , colorscale='YlGnBu'))fig.add_trace(go.Scatter(x=results[0], y=results[1] , mode='lines+markers', marker={'size':8}))fig.update_layout(width=500, height = 380, xaxis_title='x1', yaxis_title='x2')fig.show()
f f f 在 ( 0 , 0 ) (0, 0) (0,0)有最小值。这个函数在 x 1 x_1 x
这篇关于Mxnet (28): 动量(Momentum)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!