• 输入
#导入模块
import torch
import torch.nn.functional as F
from torch.autograd import Variable
import matplotlib.pyplot as plt

x=torch.unsqueeze(torch.linspace(-1,1,100),dim=1)
#对输入的制定位置插入维度 1,无torch.unsqueeze,x是向量torch.Size([100]),有之后x是 torch.Size([100, 1])的矩阵
y=x**2+0.2*torch.rand(x.size())#x的平方,加噪声(从区间[0,1)的均匀分布中抽取的一组随机数,输出形状与x相同)
print(x,y,x.size())
x,y=Variable(x),Variable(y)#将x,y张量转化为变量
class Net(torch.nn.Module):
    def __init__(self,n_feature,n_hidden,n_output):#搭建层所要的初始信息,特征数,隐藏层单元数和输出单元数
        super(Net,self).__init__()#继承Net到模块,官方步骤
        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))#self.hidden(x)给x加权成为a,用激励函数将a变成特征b
        x=self.predict(x)#self.predict(b)给b加权,预测最终结果
        return x#返回最终预测值
net=Net(1,10,1)#只有一个输入单元,一个输出单元,隐藏单元定为10个
print(net)   #搭建神经网络完毕

plt.ion()
plt.show()

opt=torch.optim.SGD(net.parameters(),lr=0.5)#设置学习率为0.5,用随机梯度下降法优化net神经网络的参数
lossfunc=torch.nn.MSELoss()#设置损失函数为均方差函数
for t in range(100):#训练步数100
    prediction=net(x)#预测值
    loss=lossfunc(prediction,y)#预测值与真实值的误差
    opt.zero_grad()#梯度降0
    loss.backward()#反向传播
    opt.step()#梯度优化
    
    if t%5==0:#此时,打印一下图片
        plt.cla()#清除当前图形中的当前活动轴,其他轴不受影响。
        plt.scatter(x.data.numpy(),y.data.numpy())#numpy类型才支持plt,所以要转化
        plt.plot(x.data.numpy(),prediction.data.numpy(),'r-',lw=3)#拟合线图
        plt.text(0.5,0,'loss=%.4f'%loss.data[0],fontdict={'size':10,'color':'red'})#在(0.5,0)的位置写loss的变化
        plt.pause(0.1)#间隔时间

plt.ioff()
plt.show()
#最后画出的是动图
  • 输出

神经网络

Net(
(hidden): Linear(in_features=1, out_features=10, bias=True)
(predict): Linear(in_features=10, out_features=1, bias=True)
)
图形
如何用pytorch搭建一个简单的神经网络?

参考:莫烦python

相关文章:

  • 2021-09-27
  • 2021-04-21
  • 2021-07-05
  • 2021-11-30
  • 2022-12-23
  • 2022-12-23
  • 2021-08-31
  • 2021-05-25
猜你喜欢
  • 2021-04-26
  • 2021-07-31
  • 2021-09-06
  • 2022-12-23
  • 2021-12-29
  • 2021-07-13
  • 2022-12-23
相关资源
相似解决方案