Optimizer実験


colab設定

%config InlineBackend.figure_format='retina'
出力物(matplotlibなど)の解像度を網膜に設定する

騒音

n_data = 10000
x_numpy = -3+6*np.random.rand(n_data,1)
# y_numpy = np.exp(-(x_numpy**2))*np.cos(10*x_numpy)
y_numpy = np.exp(-(x_numpy**2))*np.cos(10*x_numpy) + 3e-2*np.random.randn(n_data,1)
plt.figure(figsize=(8,5))
plt.plot(x_numpy,y_numpy,'r.',ms=2)
plt.show()
x_torch = torch.Tensor(x_numpy).to(device)
y_torch = torch.Tensor(y_numpy).to(device)
print ("Done.")

元の意図関数の図形を以下に示す.対応するグラフィックにノイズを追加します.
ノイズは上記コードで述べたようにnpである.random.randn()に小さな実数値3 e−2を乗じて実現した.

オプティマイザの比較





これは,500番目,3500番目,9999番目の再epochでそれぞれのオプティマイザを用いたモデルが関数にどれだけ近いかを示すグラフである.GTは近似したいパターンです.
ADAMは最初からいいです.すばやくSGDとMomentumは似ているように見えます.