
【pytorchでニューラルネットワーク#3】パラメータ更新(optimizer)
記事の目的
pytorchでニューラルネットワークを実装する上で必要になるパラメータ更新について実装していきます。ここにある全てのコードは、コピペで再現することが可能です。
目次
1 ライブラリ

# In[1] import torch from torch import nn import torch.optim as optim torch.manual_seed(1)
2 自動微分

# In[2] x = torch.tensor([1,2,3,4,5]).unsqueeze(1).float() t = torch.tensor([5,8,11,14,17]).unsqueeze(1).float() # In[3] linear = nn.Linear(1,1) MSE = nn.MSELoss() # In[4] y = linear(x) L = MSE(y,t) L.backward() # In[5] linear.weight, linear.bias # In[6] linear.weight.grad, linear.bias.grad
3 パラメータ更新

# In[7] linear = nn.Linear(1,1) MSE = nn.MSELoss() optimizer = optim.SGD(linear.parameters(), lr=1e-3) # In[8] linear.weight, linear.bias # In[9] y = linear(x) L = MSE(y,t) L.backward() optimizer.step() # In[10] linear.weight, linear.bias
4 パラメータ推定

# In[11]
x = torch.tensor([1,2,3,4,5]).unsqueeze(1).float()
t = torch.tensor([5,8,11,14,17]).unsqueeze(1).float()
# In[12]
linear = nn.Linear(1,1)
MSE = nn.MSELoss()
optimizer = optim.SGD(linear.parameters(), lr=1e-2)
# In[13]
for epoch in range(1000):
y = linear(x)
L = MSE(y,t)
optimizer.zero_grad()
L.backward()
optimizer.step()
# In[14]
linear.weight, linear.bias