pytorch 模拟关系拟合——回归实例
本次用pytroch来实现一个简单的回归分析,也借此机会来熟悉pytorch的一些基本操作。
1.建立数据集
importtorch fromtorch.autogradimportVariable importmatplotlib.pyplotasplt #torch.linspace(-1,1,100)表示返回一个一维张量,包含在区间-1到1上均匀间隔的100个点; #torch.unsqueeze(input,dim=1)表示转换维度 x=torch.unsqueeze(torch.linspace(-1,1,100),dim=1) #生成的y值为x的平方加上随机数 y=x.pow(2)+0.2*torch.rand(x.size()) #用Variable来修饰这些数据tensor x,y=torch.autograd.Variable(x),Variable(y) #画图 plt.scatter(x.data.numpy(),y.data.numpy()) plt.show()
2.构建神经网络
importtorch importtorch.nn.functionalasF#激励函数都在这 classNet(torch.nn.Module):#继承torch的Module def__init__(self,n_feature,n_hidden,n_output): super(Net,self).__init__()#继承__init__功能 #定义每层用什么样的形式 self.hidden=torch.nn.Linear(n_feature,n_hidden)#隐藏层线性输出 self.predict=torch.nn.Linear(n_hidden,n_output)#输出层线性输出 defforward(self,x):#这同时也是Module中的forward功能 #正向传播输入值,神经网络分析出输出值 x=F.relu(self.hidden(x))#激励函数(隐藏层的线性值) x=self.predict(x)#输出值 returnx net=Net(n_feature=1,n_hidden=10,n_output=1) print(net)#net的结构 """ Net( (hidden):Linear(1->10) (predict):Linear(10->1) ) """
3.实时绘图查看回归效果
importmatplotlib.pyplotasplt plt.ion()#打开交互绘图模式(便于实时显示图像变化) plt.show() optimizer=torch.optim.SGD(net.parameters(),lr=0.1)#定义优化器和学习率 loss_func=torch.nn.MSELoss()#定义损失函数 fortinrange(200): prediction=net(x) loss=loss_func(prediction,y) optimizer.zero_grad() loss.backward() optimizer.step() ift%5==0: plt.cla() plt.scatter(x.data.numpy(),y.data.numpy())#画散点图 plt.plot(x.data.numpy(),prediction.data.numpy(),'r-',lw=5)#画拟合曲线 plt.text(0.5,0,'Loss=%.4f'%loss.data[0],fontdict={'size':20,'color':'red'})#显示损失数值 plt.pause(0.1) #如果在脚本中使用ion()命令开启了交互模式,没有使用ioff()关闭的话,则图像会一闪而过,并不会常留。要想防止这种情况,需要在plt.show()之前加上ioff()命令。 plt.ioff() plt.show()
运行终态效果图如下:
以上这篇pytorch模拟关系拟合——回归实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。