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中字符串的处理技巧分享
Sep 17 Python
python实现二叉查找树实例代码
Feb 08 Python
Django中Model的使用方法教程
Mar 07 Python
python中format()函数的简单使用教程
Mar 14 Python
对python创建及引用动态变量名的示例讲解
Nov 10 Python
解决Django中多条件查询的问题
Jul 18 Python
pytorch加载自定义网络权重的实现
Jan 07 Python
Anaconda配置pytorch-gpu虚拟环境的图文教程
Apr 16 Python
python使用nibabel和sitk读取保存nii.gz文件实例
Jul 01 Python
Python异常处理机制结构实例解析
Jul 23 Python
详解python算法常用技巧与内置库
Oct 17 Python
Python语言规范之Pylint的详细用法
Jun 24 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操作Memcache基本函数
2016/07/14 PHP
详解PHP发送邮件知识点
2018/05/06 PHP
PHP实现数组向任意位置插入,删除,替换数据操作示例
2019/04/05 PHP
用javascript实现的图片马赛克后显示并切换加文字功能
2007/04/21 Javascript
JS打开新窗口的2种方式
2013/04/18 Javascript
Iframe 自动适应页面的高度示例代码
2014/02/26 Javascript
JavaScript实现鼠标滑过处生成气泡的方法
2015/05/16 Javascript
JS实现简单的右下角弹出提示窗口完整实例
2016/06/21 Javascript
AngularJS学习笔记(三)数据双向绑定的简单实例
2016/11/08 Javascript
DataTables+BootStrap组合使用Ajax来获取数据并且动态加载dom的方法(排序,过滤,分页等)
2016/11/09 Javascript
nodejs使用http模块发送get与post请求的方法示例
2018/01/08 NodeJs
VeeValidate在vue项目里表单校验应用案例
2018/05/09 Javascript
npm 常用命令详解(小结)
2019/01/17 Javascript
如何基于js判断浏览器版本
2020/02/20 Javascript
vue3 watch和watchEffect的使用以及有哪些区别
2021/01/26 Vue.js
python基于右递归解决八皇后问题的方法
2015/05/25 Python
python实现redis三种cas事务操作
2017/12/19 Python
详解python使用递归、尾递归、循环三种方式实现斐波那契数列
2018/01/16 Python
详解tensorflow载入数据的三种方式
2018/04/24 Python
对python中大文件的导入与导出方法详解
2018/12/28 Python
django-filter和普通查询的例子
2019/08/12 Python
django模板获取list中指定索引的值方式
2020/05/14 Python
Python 实现一个计时器
2020/07/28 Python
matplotlib教程——强大的python作图工具库
2020/10/15 Python
CSS3田字格列表的样式编写方法
2018/11/22 HTML / CSS
html5构建触屏网站之touch事件介绍
2013/01/07 HTML / CSS
boostrap modal 闪现问题的解决方法
2020/09/01 HTML / CSS
外语学院毕业生的自我鉴定
2013/11/28 职场文书
英文求职信写作小建议
2014/02/16 职场文书
目标管理责任书
2014/04/15 职场文书
2014光棍节大学生联谊活动方案
2014/10/10 职场文书
工作期间打牌检讨书范文
2014/11/20 职场文书
小学四年级学生评语
2014/12/26 职场文书
2015清明节祭奠英烈寄语大全
2015/03/04 职场文书
python超详细实现完整学生成绩管理系统
2022/03/17 Python
Java设计模式中的命令模式
2022/04/28 Java/Android