深度学习框架Pytorch——学习笔记(二)线性回归
使用pytorch 定义网络实现 线性回归
import torch
from torch.autograd import Variable
from matplotlib import pyplot as plt
x_data = Variable(torch.Tensor([[1.0], [2.0], [3.0]]))
y_data = Variable(torch.Tensor([[2.0], [4.0], [6.0]]))
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)
for epoch in range(1000):
y_pred = model(x_data)
loss = criterion(y_pred, y_data)
print(epoch, loss.data)
optimizer.zero_grad()
loss.backward()
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()的输入个数与输出个数相同,即维度相同