深さ学習フレームワークPytorch——学習ノート(三)線形回帰
10342 ワード
深さ学習フレームワークPytorch——学習ノート(二)線形回帰
pytorch定義ネットワークによる線形回帰
まとめ
pytorch定義ネットワークによる線形回帰
import torch
from torch.autograd import Variable
from matplotlib import pyplot as plt
# train data
# (x,y)
x_data = Variable(torch.Tensor([[1.0], [2.0], [3.0]]))
y_data = Variable(torch.Tensor([[2.0], [4.0], [6.0]]))
# Linear
class Model(torch.nn.Module):
def __init__(self):
super(Model, self).__init__()
self.linear = torch.nn.Linear(1, 1)
def forward(self, x):
y_pred = self.linear(x)
return y_pred
model = Model()
#
criterion = torch.nn.MSELoss(size_average=False)
optimizer = torch.optim.SGD(model.parameters(), lr=0.01)
# Training
for epoch in range(1000):
# Forward pass
y_pred = model(x_data)
# Compute loss
loss = criterion(y_pred, y_data)
print(epoch, loss.data)
# Zero gradients
optimizer.zero_grad()
# perform backward pass
loss.backward()
# update weights
optimizer.step()
#
x = torch.arange(0, 20.0).view(-1, 1)
model.eval()
y = model(x)
plt.plot(x.data.numpy(), y.data.numpy())
plt.scatter(x_data.data.numpy(), y_data.data.numpy())
plt.xlim(0, 7)
plt.ylim(0, 7)
plt.show()
plt.pause(0.5)
#
var = Variable(torch.Tensor([4.0]))
print("predict (after training)", 4, model(var).data[0].numpy())
まとめ
1. torch.nn.Module
2. torch.nn.Linear() ,**y =a*x** , a
3. net() ,