Optimizer 실습
colab 설정
%config InlineBackend.figure_format='retina'
matplotlib와 같은 출력물의 해상도를 retina로 설정
노이즈
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()에 작은 실수값인 3e-2를 곱해줘서 구현된다.
optimizer 비교
500번째, 3500번째, 9999번재 epoch에서 각각의 optimizer를 활용한 모델이 함수를 얼마나 근사하고 있는지 나타내는 그래프들이다. GT는 근사하고자 하는 그래프다.
ADAM은 초기부터 벌써 근사했다. 매우 빠르다. SGD와 Momentum은 비슷해보인다.
Leave a comment