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 相关文章推荐
Linux系统上Nginx+Python的web.py与Django框架环境
Dec 25 Python
python机器人行走步数问题的解决
Jan 29 Python
利用python将pdf输出为txt的实例讲解
Apr 23 Python
Python可变参数*args和**kwargs用法实例小结
Apr 27 Python
django请求返回不同的类型图片json,xml,html的实例
May 22 Python
python递归函数绘制分形树的方法
Jun 22 Python
用python实现k近邻算法的示例代码
Sep 06 Python
python协程之动态添加任务的方法
Feb 19 Python
Python批量生成幻影坦克图片实例代码
Jun 04 Python
python转化excel数字日期为标准日期操作
Jul 14 Python
python实现将中文日期转换为数字日期
Jul 14 Python
解决Pycharm 运行后没有输出的问题
Feb 05 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
linux下 C语言对 php 扩展
2008/12/14 PHP
thinkphp ajaxfileupload实现异步上传图片的示例
2017/08/28 PHP
使用swoole 定时器变更超时未支付订单状态的解决方案
2019/07/24 PHP
js 巧妙去除数组中的重复项
2010/01/25 Javascript
javascript编码的几个方法详细介绍
2013/01/06 Javascript
js实现图片轮换效果代码
2013/04/16 Javascript
fixedBox固定div漂浮代码支持ie6以上大部分主流浏览器
2014/06/26 Javascript
AngularJS中的模块详解
2015/01/29 Javascript
Windows系统中安装nodejs图文教程
2015/02/28 NodeJs
Jquery实现的简单轮播效果【附实例】
2016/04/19 Javascript
jquery ajax局部加载方法详解(实现代码)
2016/05/12 Javascript
Javascript闭包与函数柯里化浅析
2016/06/22 Javascript
jQuery实现的表头固定效果实例【附完整demo源码下载】
2016/08/01 Javascript
JS文件上传神器bootstrap fileinput详解
2021/01/28 Javascript
基于vue-element组件实现音乐播放器功能
2018/05/06 Javascript
在Vue中使用axios请求拦截的实现方法
2018/10/25 Javascript
vue使用高德地图点击下钻上浮效果的实现思路
2019/10/12 Javascript
ES6 proxy和reflect的使用方法与应用实例分析
2020/02/15 Javascript
利用JS判断元素是否为数组的方法示例
2021/01/08 Javascript
Python设计模式之代理模式实例
2014/04/26 Python
Python实现爬取知乎神回复简单爬虫代码分享
2015/01/04 Python
python获取程序执行文件路径的方法(推荐)
2018/04/26 Python
Python中的异常处理try/except/finally/raise用法分析
2019/02/28 Python
python 批量解压压缩文件的实例代码
2019/06/27 Python
使用selenium和pyquery爬取京东商品列表过程解析
2019/08/15 Python
python多进程下的生产者和消费者模型
2020/05/07 Python
Android interview questions
2016/12/25 面试题
汽车技术服务与营销专业在籍生自荐信
2013/09/28 职场文书
工作疏忽检讨书
2014/01/25 职场文书
小学新教师培训方案
2014/02/03 职场文书
工作检讨书怎么写
2014/10/10 职场文书
信用卡工资证明范本
2015/06/19 职场文书
高中运动会前导词
2015/07/20 职场文书
记者节感言
2015/08/03 职场文书
Spring实现内置监听器
2021/07/09 Java/Android
Kubernetes关键组件与结构组成介绍
2022/03/31 Servers