【pytorchでニューラルネットワーク#4】単回帰分析

記事の目的

pytorchで単回帰分析について実装していきます。ここにある全てのコードは、コピペで再現することが可能です。

 

目次

  1. ライブラリデータの作成
  2. モデル
  3. モデルの学習
  4. 結果の可視化

 

1 ライブラリとデータの作成

# In[1]
import torch
import torch.nn as nn
import torch.optim as optim
import matplotlib.pyplot as plt
torch.manual_seed(1)

# In[2]
x_train = torch.normal(5, 1, size=(10,))
t_train = 3*x_train + 2 + torch.randn(10)
x_train = x_train.unsqueeze(1).float()
t_train = t_train.unsqueeze(1).float()

# In[3]
plt.scatter(x_train,t_train)

 

2 モデル

# In[4]
model = nn.Linear(1, 1)
criterion = nn.MSELoss()
optimizer = optim.SGD(model.parameters(), lr=1e-2)

# In[5]
list(model.parameters())

 

3 モデルの学習

# In[6]
for epoch in range(1, 5 + 1):
    
        y = model(x_train)
        loss_train = criterion(y, t_train)
        
        optimizer.zero_grad()
        loss_train.backward()
        optimizer.step()

        print(f"Epoch {epoch}, loss_train {loss_train:.4f}")

 

4 結果の可視化

# In[7]
x = torch.arange(3,7).unsqueeze(1).float()
y = model(x)
plt.plot(x, y.detach())
plt.scatter(x_train, t_train)