pytorch-回归网络和训练过程

1 构建数据集

我们创建一些假数据来模拟真实的情况. 比如一个一元二次函数: y = a * x^2 + b, 我们给 y 数据加上一点噪声来更加真实的展示它.

import torch

import matplotlib.pyplot as plt

x=torch.unsqueeze(torch.lindpace(-1,1,100),dim=1)

y=x.pow(2)+0.2*torch.rand(x.size())

# 画图

plt.scatter(x.data.numpy(),y.data.numpy())

plt.show()

 

2 建立神经网络

直接用torch 中的体系,先定义所有的层属性(__init__()),然后再一层层搭建(forward(x))层于层的关系链接,建立关系的时候,我们会用到激励函数

import torch

import torch.nn.functional as F # 激励函数都在这

class Net(torch.nn.Module):

def __init__(self,n_feature,n_hidden,n_output)

       super(Net,self).__init__()

       # 定义每层用什么样的形式

        self.hidden=torch.nn.Linear(n_feature,n_hidden)

         self.predict=torch.nn.Linear(n_hidden,n_output)

 def forward(self,x):

       x=F.relu(self.hidden(x))

       x=self.predict(x)

        return x

net=Net(n_feature=1,n_hidden=10,n_output=1)

print(net)

3 训练网络

# optimizer 是训练工具

optimizer=torch.optim.SGD(net,parameters(),lr=0.2)

loss_func=torch.nn.MSELoss() # 预测值和真实值的误差计算公式

for t in range(100):

     prediction=net(x)

     loss=loss_func(prediction,y)

     optimizer.zero_grad()

     loss.backward()

     optimizer.step() 

 

ref:https://morvanzhou.github.io/tutorials/machine-learning/torch/3-01-regression/

你可能感兴趣的:(linux和服务器)