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入门指引
Apr 01 Python
Python使用Matplotlib模块时坐标轴标题中文及各种特殊符号显示方法
May 04 Python
利用Python如何实现一个小说网站雏形
Nov 23 Python
Python函数定义及传参方式详解(4种)
Mar 18 Python
Django ORM 自定义 char 类型字段解析
Aug 09 Python
python打开使用的方法
Sep 30 Python
python爬虫爬取幽默笑话网站
Oct 24 Python
如何配置关联Python 解释器 Anaconda的教程(图解)
Apr 30 Python
解决keras加入lambda层时shape的问题
Jun 11 Python
Python提取视频中图片的示例(按帧、按秒)
Oct 22 Python
Python爬虫如何破解JS加密的Cookie
Nov 19 Python
Python 调用 ES、Solr、Phoenix的示例代码
Nov 23 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中怎么搜索相关联数组键值及获取之
2013/10/17 PHP
thinkphp的静态缓存用法分析
2014/11/29 PHP
PHP中使用php5-ffmpeg撷取视频图片实例
2015/01/07 PHP
列举PHP的Yii 2框架的开发优势
2015/07/03 PHP
composer.lock文件的作用
2016/02/03 PHP
用js实现层随着内容大小动态渐变改变 推荐
2009/12/19 Javascript
JavaScript 一行代码,轻松搞定浮动快捷留言-V2升级版
2010/04/02 Javascript
js怎么判断flash swf文件是否加载完毕
2014/08/14 Javascript
整理AngularJS中的一些常用指令
2015/06/16 Javascript
jquery validate和jquery form 插件组合实现验证表单后AJAX提交
2015/08/26 Javascript
jQuery实现自动调用和触发某个事件的方法
2016/11/18 Javascript
Javascript仿京东放大镜的效果
2017/03/01 Javascript
react.js CMS 删除功能的实现方法
2017/04/17 Javascript
详解如何在你的Vue项目配置vux
2018/06/04 Javascript
node.js爬取中关村的在线电瓶车信息
2018/11/13 Javascript
JavaScript中BOM对象原理与用法分析
2019/07/09 Javascript
解决jquery validate 验证不通过后验证正确的信息仍残留在label上的方法
2019/08/27 jQuery
jquery ajax 请求小技巧实例分析
2019/11/11 jQuery
[30:51]DOTA2上海特级锦标赛主赛事日 - 3 胜者组第二轮#1Liquid VS MVP.Phx第一局
2016/03/04 DOTA
Python编码时应该注意的几个情况
2013/03/04 Python
python基于xml parse实现解析cdatasection数据
2014/09/30 Python
用python 制作图片转pdf工具
2015/01/30 Python
Python解惑之整数比较详解
2017/04/24 Python
Python拼接字符串的7种方法总结
2018/11/01 Python
python实现年会抽奖程序
2019/01/22 Python
DjangoWeb使用Datatable进行后端分页的实现
2020/05/18 Python
华为俄罗斯官方网上商城:购买Huawei手机和平板
2017/04/21 全球购物
定义一结构体数组表示分数,并求两个分数相加之和
2013/06/11 面试题
法学函授自我鉴定
2014/02/06 职场文书
公司总经理工作职责管理办法
2014/02/28 职场文书
技术股份合作协议书
2014/10/05 职场文书
党的群众路线教育实践活动整改落实情况自查报告
2014/10/28 职场文书
公司人力资源管理制度
2015/08/05 职场文书
毕业生就业推荐表自我鉴定
2019/06/20 职场文书
mysql优化之query_cache_limit参数说明
2021/07/01 MySQL
Node-Red实现MySQL数据库连接的方法
2021/08/07 MySQL