pytorch 模拟关系拟合——回归实例


Posted in Python onJanuary 14, 2020

本次用 pytroch 来实现一个简单的回归分析,也借此机会来熟悉 pytorch 的一些基本操作。

1. 建立数据集

import torch
from torch.autograd import Variable
import matplotlib.pyplot as plt

# 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. 构建神经网络

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

class Net(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)  # 输出层线性输出

  def forward(self, x):  # 这同时也是 Module 中的 forward 功能
    # 正向传播输入值, 神经网络分析出输出值
    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) # net 的结构
"""
Net (
 (hidden): Linear (1 -> 10)
 (predict): Linear (10 -> 1)
)
"""

3. 实时绘图查看回归效果

import matplotlib.pyplot as plt

plt.ion() #打开交互绘图模式(便于实时显示图像变化)
plt.show() 

optimizer = torch.optim.SGD(net.parameters(), lr=0.1) # 定义优化器和学习率
loss_func = torch.nn.MSELoss() #定义损失函数

for t in range(200):
  prediction = net(x)
  loss = loss_func(prediction, y)

  optimizer.zero_grad()
  loss.backward()
  optimizer.step()

  if t%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 模拟关系拟合——回归实例

以上这篇pytorch 模拟关系拟合——回归实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python编程中的异常处理教程
Aug 21 Python
详解python函数传参是传值还是传引用
Jan 16 Python
python pandas 如何替换某列的一个值
Jun 09 Python
浅谈解除装饰器作用(python3新增)
Oct 15 Python
Django Admin中增加导出CSV功能过程解析
Sep 04 Python
Python 可变类型和不可变类型及引用过程解析
Sep 27 Python
pytorch 归一化与反归一化实例
Dec 31 Python
详解python方法之绑定方法与非绑定方法
Aug 17 Python
Django中和时区相关的安全问题详解
Oct 12 Python
Python的信号库Blinker用法详解
Dec 31 Python
Python入门基础之数字字符串与列表
Feb 01 Python
教你用python实现一个无界面的小型图书管理系统
May 21 Python
PyTorch实现AlexNet示例
Jan 14 #Python
Pytorch 实现focal_loss 多类别和二分类示例
Jan 14 #Python
Python实现钉钉订阅消息功能
Jan 14 #Python
Python Tensor FLow简单使用方法实例详解
Jan 14 #Python
Python利用全连接神经网络求解MNIST问题详解
Jan 14 #Python
基于pytorch的lstm参数使用详解
Jan 14 #Python
Python利用逻辑回归模型解决MNIST手写数字识别问题详解
Jan 14 #Python
You might like
PHP实现异步调用方法研究与分享
2011/10/27 PHP
深入了解 register_globals (附register_globals=off 网站打不开的解决方法)
2012/06/27 PHP
laravel 实现向公共模板中传值 (view composer)
2019/10/22 PHP
js控制框架刷新
2008/08/01 Javascript
zeroclipboard复制到剪切板的flash
2010/08/04 Javascript
初窥JQuery(一)jquery选择符 必备知识点
2010/11/25 Javascript
调试Javascript代码(浏览器F12及VS中debugger关键字)
2013/01/25 Javascript
js判断选择时间不能小于当前时间的示例代码
2013/09/24 Javascript
Easyui Treegrid改变默认图标的方法
2016/04/29 Javascript
json与jsonp知识小结(推荐)
2016/08/16 Javascript
基于slideout.js实现移动端侧边栏滑动特效
2016/11/28 Javascript
原生js实现日期计算器功能
2017/02/17 Javascript
快速理解 JavaScript 中的 LHS 和 RHS 查询的用法
2017/08/24 Javascript
使用vue-cli+webpack搭建vue开发环境的方法
2017/12/22 Javascript
Vue-Router2.X多种路由实现方式总结
2018/02/09 Javascript
JS中原始值和引用值的储存方式示例详解
2018/03/23 Javascript
javascript异步编程的六种方式总结
2019/05/17 Javascript
Promise扫盲贴
2019/06/24 Javascript
Element Alert警告的具体使用方法
2020/07/27 Javascript
Python greenlet实现原理和使用示例
2014/09/24 Python
Python验证码识别处理实例
2015/12/28 Python
python 实现红包随机生成算法的简单实例
2017/01/04 Python
Python编程之event对象的用法实例分析
2017/03/23 Python
python安装教程 Pycharm安装详细教程
2017/05/02 Python
Python实现对象转换为xml的方法示例
2017/06/08 Python
Python 加密与解密小结
2018/12/06 Python
对Python正则匹配IP、Url、Mail的方法详解
2018/12/25 Python
Python3.6.2调用ffmpeg的方法
2019/01/10 Python
python中的协程深入理解
2019/06/10 Python
flask开启多线程的具体方法
2020/08/02 Python
python生成xml时规定dtd实例方法
2020/09/21 Python
乌克兰设计师和品牌的服装:Love&Live
2020/04/14 全球购物
大学生就业自荐信
2013/10/26 职场文书
党员大会主持词
2014/04/02 职场文书
《画家乡》教学反思
2014/04/22 职场文书
大学生就业求职信
2014/06/12 职场文书