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 22 Python
python中pandas.DataFrame对行与列求和及添加新行与列示例
Mar 12 Python
pandas 读取各种格式文件的方法
Jun 22 Python
Django中如何防范CSRF跨站点请求伪造攻击的实现
Apr 28 Python
如何通过python画loss曲线的方法
Jun 26 Python
python for和else语句趣谈
Jul 02 Python
Python中PyQt5/PySide2的按钮控件使用实例
Aug 17 Python
关于Pytorch的MLP模块实现方式
Jan 07 Python
Python短信轰炸的代码
Mar 25 Python
keras 解决加载lstm+crf模型出错的问题
Jun 10 Python
Python + opencv对拍照得到的图片进行背景去除的实现方法
Nov 18 Python
Python实现信息轰炸工具(再也不怕说不过别人了)
Jun 11 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
Yii学习总结之安装配置
2015/02/22 PHP
PHP保存session到memcache服务器的方法
2016/01/19 PHP
保证JavaScript和Asp、Php等后端程序间传值编码统一
2009/04/17 Javascript
基于JavaScript自定义构造函数的详解说明
2013/04/24 Javascript
jquery表单验证框架提供的身份证验证方法(示例代码)
2013/12/27 Javascript
jQuery简单几行代码实现tab切换
2015/03/10 Javascript
jQuery树控件zTree使用方法详解(一)
2017/02/28 Javascript
Bootstrap Table使用整理(一)
2017/06/09 Javascript
JavaScript如何判断input数据类型
2020/02/06 Javascript
VUE 单页面使用 echart 窗口变化时的用法
2020/07/30 Javascript
详解Vue的组件中data选项为什么必须是函数
2020/08/17 Javascript
[52:40]完美世界DOTA2联赛PWL S2 Magma vs GXR 第一场 11.29
2020/12/02 DOTA
学习python处理python编码问题
2011/03/13 Python
Python标准库urllib2的一些使用细节总结
2015/03/16 Python
Flask之flask-script模块使用
2018/07/26 Python
在PyCharm中实现添加快捷模块
2020/02/12 Python
在Windows上安装和配置 Jupyter Lab 作为桌面级应用程序教程
2020/04/22 Python
Pycharm中如何关掉python console
2020/10/27 Python
CSS的background属性及CSS3的背景图片设置总结
2016/06/13 HTML / CSS
使用jTopo给Html5 Canva中绘制的元素添加鼠标事件
2014/05/15 HTML / CSS
Kipling凯浦林美国官网:世界著名时尚休闲包袋品牌
2016/08/24 全球购物
比利时香水网上商店:NOTINO
2018/03/28 全球购物
什么是虚拟内存?虚拟内存有什么优势?
2012/02/19 面试题
个人求职简历的自我评价范文
2013/10/09 职场文书
研究生求职推荐信范文
2013/11/30 职场文书
社区志愿者心得体会
2014/01/03 职场文书
十八大报告观后感
2014/01/28 职场文书
创建精神文明单位实施方案
2014/03/08 职场文书
组织鉴定材料
2014/06/02 职场文书
禁毒宣传标语
2014/06/19 职场文书
2015年信息中心工作总结
2015/05/25 职场文书
公司备用金管理制度
2015/08/04 职场文书
药房管理制度范本
2015/08/06 职场文书
css 中多种边框的实现小窍门
2021/04/07 HTML / CSS
python 实现的截屏工具
2021/05/08 Python
Windows环境下实现批量执行Sql文件
2021/10/05 SQL Server