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 相关文章推荐
分享Pycharm中一些不为人知的技巧
Apr 03 Python
pandas带有重复索引操作方法
Jun 08 Python
Python实现的knn算法示例
Jun 14 Python
解决python 自动安装缺少模块的问题
Oct 22 Python
python 实现对文件夹中的图像连续重命名方法
Oct 25 Python
python opencv 读取图片 返回图片某像素点的b,g,r值的实现方法
Jul 03 Python
python实现基于朴素贝叶斯的垃圾分类算法
Jul 09 Python
Python 词典(Dict) 加载与保存示例
Dec 06 Python
Python调用Windows API函数编写录音机和音乐播放器功能
Jan 05 Python
python开发实例之python使用Websocket库开发简单聊天工具实例详解(python+Websocket+JS)
Mar 18 Python
python编程的核心知识点总结
Feb 08 Python
Django框架中视图的用法
Jun 10 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
《心理测量者3》剧场版动画预告
2020/03/02 日漫
php Smarty模板生成html文档的方法
2010/04/12 PHP
php将session放入memcached的设置方法
2014/02/14 PHP
CI框架中通过hook的方式实现简单的权限控制
2015/01/07 PHP
Session 失效的原因汇总及解决丢失办法
2015/09/30 PHP
PHP使用curl_multi_select解决curl_multi网页假死问题的方法
2018/08/15 PHP
PHP实现的抓取小说网站内容功能示例
2019/06/27 PHP
php生成随机数/生成随机字符串的方法小结【5种方法】
2020/05/27 PHP
[Web]防止用户复制页面内容和另存页面的方法
2009/02/06 Javascript
capacityFixed 基于jquery的类似于新浪微博新消息提示的定位框
2011/05/24 Javascript
JQuery拖拽元素改变大小尺寸实现代码
2012/12/10 Javascript
Javascript 拖拽雏形(逐行分析代码,让你轻松了拖拽的原理)
2015/01/23 Javascript
jquery实现百叶窗效果
2017/01/12 Javascript
jquery点赞功能实现代码 点个赞吧!
2020/05/29 jQuery
jQuery Ajax使用FormData上传文件和其他数据后端web.py获取
2017/06/11 jQuery
利用Node.js了解与测量HTTP所花费的时间详解
2017/09/22 Javascript
vue-infinite-loading2.0 中文文档详解
2018/04/08 Javascript
在vue项目中优雅的使用SVG的方法实例详解
2018/12/03 Javascript
Layui 动态禁止select下拉的例子
2019/09/03 Javascript
Python中datetime常用时间处理方法
2015/06/15 Python
Python搭建Spark分布式集群环境
2019/07/05 Python
详解numpy.meshgrid()方法使用
2019/08/01 Python
PyTorch中permute的用法详解
2019/12/30 Python
python中文分词库jieba使用方法详解
2020/02/11 Python
解析python 类方法、对象方法、静态方法
2020/08/15 Python
CSS3 translate导致字体模糊的实例代码
2019/08/30 HTML / CSS
CSS3 分类菜单效果
2019/05/27 HTML / CSS
英国Iceland杂货店:网上食品购物
2020/12/16 全球购物
Linux面试题LINUX系统类
2014/11/19 面试题
家长对小学生的评语
2014/01/28 职场文书
少年闰土教学反思
2014/02/22 职场文书
安全责任书范本
2014/04/15 职场文书
大班亲子运动会方案
2014/06/10 职场文书
北京奥运会主题口号
2014/06/13 职场文书
祝福语集锦:送给毕业同学祝福语
2019/11/21 职场文书
python爬虫--selenium模块
2021/03/31 Python