神经网络入门的应用就是拟合方程,这篇文章就针对这个问题来熟悉pytorch怎么搭建神经网络模型。
1. 问题提出
我们要拟合的是y = x^2这个最简单的一元二次方程,首先要创建我们的x,y数据,它们都是100*1维的数据,对y加了一个噪声,让它具有一些离散性。
# 建立数据:拟合y = x^2曲线
x = torch.unsqueeze(torch.linspace(-1, 1, 100), dim=1) # x data (tensor), shape=(100, 1)
y = x.pow(2) + 0.2*torch.rand(x.size()) # noisy y data (tensor), shape=(100, 1)
用散点图显示出来:
2. 神经网络框架建立
pytorch中我们需要写一个类来表示神经网络的框架,它需要继承pytorch框架中的nn.Module这个类。
由于这个回归问题比较简单,我们只建立两层全连接网络结构,全连接层在nn.Module这个类中已经实现,我们只需要进行调用就好。
构造函数__init__ 是确定我们的网络架构,需要给出输入、输出层的个数和隐藏层神经单元数。
自定义的forward函数 则是我们需要自己实现的神经网络前向传播功能,在第一层隐藏层后加了激活函数relu()。
# 建立神经网络框架
class Net(nn.Module):
def __init__(self,n_feature,n_hidden,n_output): # 构造函数
super(Net,self).__init__() # 继承nn.Module
# 定义每层用什么样的形式
self.hidden = nn.Linear(n_feature,n_hidden) # 建立隐藏层
self.predict = nn.Linear(n_hidden,n_output) # 建立输出层
# 实现前向传播功能
def forward(self,x):