一、回归任务介绍:
拟合一个二元函数 y = x ^ 2.
二、步骤:
- 导入包
- 创建数据
- 构建网络
- 设置优化器和损失函数
- 前向和后向传播训练网络
- 画图
import torch
from torch.autograd import Variable
import torch.nn.functional as F
import matplotlib.pyplot as plt
#torch中的数据要是二维的,unsqueeze是将一维数据转化成二维数据
tmp = torch.linspace(-1, 1, 100)
x = torch.unsqueeze(tmp, dim=1)
y = x.pow(2) + 0.2*torch.rand(x.size())
# print(tmp) #torch.Size([100])
# print(x) #torch.Size([100, 1])
# 转成向量
x, y = Variable(x), Variable(y)
plt.scatter(x.data.numpy(), y.data.numpy())
plt.show()
# Net类继承了Module这个模块
class Net(torch.nn.Module):
def __init__(self,n_feature,n_hidden,n_output):
# 在搭建模型之前需要继承的一些信息,super表示继承nn.Module的信息,此步骤必须有
super(Net,self).__init__()
self.hidden = torch.nn.Linear(n_feature,n_hidden)
self.predict = torch.nn.Linear(n_hidden,n_output)