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 help()函数用法详解
Mar 11 Python
Python实现把数字转换成中文
Jun 29 Python
bat和python批量重命名文件的实现代码
May 19 Python
Python实现自定义顺序、排列写入数据到Excel的方法
Apr 23 Python
python可视化实现代码
Jan 15 Python
Django web框架使用url path name详解
Apr 29 Python
利用python求积分的实例
Jul 03 Python
基于python3 pyQt5 QtDesignner实现窗口化猜数字游戏功能
Jul 15 Python
Python使用matplotlib 模块scatter方法画散点图示例
Sep 27 Python
使用Python爬虫库BeautifulSoup遍历文档树并对标签进行操作详解
Jan 25 Python
解决virtualenv -p python3 venv报错的问题
Feb 05 Python
Flask使用SQLAlchemy实现持久化数据
Jul 16 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 实用代码收集
2010/01/22 PHP
ThinkPHP删除栏目(实现批量删除栏目)
2017/06/21 PHP
js中cookie的使用详细分析
2008/05/28 Javascript
firefox火狐浏览器与与ie兼容的2个问题总结
2010/07/20 Javascript
防止xss和sql注入:JS特殊字符过滤正则
2013/04/18 Javascript
将页面table内容与样式另存成excel文件的方法
2015/08/05 Javascript
jQuery简单实现title提示效果示例
2016/08/01 Javascript
JavaScript如何实现图片懒加载(lazyload) 提高用户体验(增强版)
2016/11/30 Javascript
jQuery实现简单弹窗遮罩效果
2017/02/27 Javascript
Bootstrap Table从零开始
2017/06/30 Javascript
判断滚动条滑到底部触发事件(实例讲解)
2017/11/15 Javascript
vue.js获得当前元素的文字信息方法
2018/03/09 Javascript
微信小程序项目实践之九宫格实现及item跳转功能
2018/07/19 Javascript
小程序封装wx.request请求并创建接口管理文件的实现
2019/04/29 Javascript
微信小程序中button去除默认的边框实例代码
2019/08/01 Javascript
基于Vue3.0开发轻量级手机端弹框组件V3Popup的场景分析
2020/12/30 Vue.js
Python3中多线程编程的队列运作示例
2015/04/16 Python
Python的Bottle框架中实现最基本的get和post的方法的教程
2015/04/30 Python
Python django实现简单的邮件系统发送邮件功能
2017/07/14 Python
python2.7安装图文教程
2018/03/13 Python
使用Python画了一棵圣诞树的实例代码
2020/11/27 Python
基于html5 canvas做批改作业的小插件
2020/05/20 HTML / CSS
Michael Kors美国官网:美式奢侈生活风格的代表
2016/11/25 全球购物
美国Curacao百货连锁店网站:iCuracao.com
2019/07/20 全球购物
异常和异常类的概念
2014/09/12 面试题
What's the difference between Debug and Trace class? (Debug类与Trace类有什么区别)
2013/09/10 面试题
如何做好总经理助理
2013/11/12 职场文书
环保建议书300字
2014/05/14 职场文书
安全生产月标语
2014/10/07 职场文书
高中校园广播稿
2014/10/21 职场文书
工作态度怎么写
2015/06/25 职场文书
《七律·长征》教学反思
2016/02/16 职场文书
女人创业励志语录,句句蕴含能量,激发你的潜能
2019/08/20 职场文书
《雪域豹影》读后感:父爱的伟大
2019/12/23 职场文书
python利用while求100内的整数和方式
2021/11/07 Python
Python实现视频自动打码的示例代码
2022/04/08 Python