传统机器学习中,实现线性回归的方法,是先手推公式,得出 θ 的表达式,然后计算得出。但在深度学习中,方法会更简单粗暴,而且拟合效果更好。以下介绍使用 Pytorch 通过深度学习的方法,实现线性回归算法。
代码示例
1、创建x变量
import torch x = torch.linspace(-1, 1, 100, requires_grad=True) x = x.view(-1, 1) # change shape y = x**2 + 0.2 * torch.rand(x.size())
2、画图显示
from matplotlib import pyplot as plt plt.scatter(x.data.numpy(), y.data.numpy()) plt.show()
3、建立网络模型
参考文档:https://pytorch.org/tutorials/beginner/introyt/modelsyt_tutorial.html
import torch.nn as nn class LModule(nn.Module): def __init__(self): super().__init__() self.linear1 = nn.Linear(1, 10) self.activation = nn.ReLU() self.linear2 = nn.Linear(10, 1) def forward(self, x): x = self.linear1(x) x = self.activation(x) x = self.linear2(x) return x
4、训练模型
参考文档:https://pytorch.org/tutorials/beginner/introyt/trainingyt.html
optimizer = torch.optim.SGD(lmodule.parameters(), lr=0.1) loss_fn = nn.MSELoss() for t in range(1000): pred_y = lmodule(x) loss = loss_fn(pred_y, y) optimizer.zero_grad() loss.backward(retain_graph=True) optimizer.step()
5、动图显示训练过程
from matplotlib import pyplot as plt plt.ion() plt.show() # plot and show learning process plt.cla() plt.scatter(x.data.numpy(), y.data.numpy()) plt.plot(x.data.numpy(), pred_y.data.numpy(), 'r-', lw=5) plt.text(0.5, 0, 'Loss=%.4f' % loss.data.numpy(), fontdict={'size': 15, 'color': 'red'}) plt.pause(0.1)
本文为 陈华 原创,欢迎转载,但请注明出处:http://ichenhua.cn/read/242