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 18 Python
Python基于sftp及rsa密匙实现远程拷贝文件的方法
Sep 21 Python
python常用知识梳理(必看篇)
Mar 23 Python
python多行字符串拼接使用小括号的方法
Mar 19 Python
Python中staticmethod和classmethod的作用与区别
Oct 11 Python
Python读取系统文件夹内所有文件并统计数量的方法
Oct 23 Python
python实现简单的单变量线性回归方法
Nov 08 Python
python+selenium实现QQ邮箱自动发送功能
Jan 23 Python
python中字典按键或键值排序的实现代码
Aug 27 Python
keras实现VGG16方式(预测一张图片)
Jul 07 Python
Python实现快速大文件比较代码解析
Sep 04 Python
python将下载到本地m3u8视频合成MP4的代码详解
Nov 24 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 高手之路(三)
2006/10/09 PHP
php基础知识:类与对象(5) static
2006/12/13 PHP
php 方便水印和缩略图的图形类
2009/05/21 PHP
ThinkPHP中类的构造函数_construct()与_initialize()的区别详解
2017/03/13 PHP
PHP 的Opcache加速的使用方法
2017/12/29 PHP
Nigma vs Alliance BO5 第一场2.14
2021/03/10 DOTA
jQuery Mobile页面跳转后未加载外部JS原因分析及解决
2013/03/18 Javascript
jQuery toggleClass应用实例(附效果图)
2014/04/06 Javascript
jquery实现图片按比例缩放示例
2014/07/01 Javascript
jQuery操作JSON的CRUD用法实例
2015/02/25 Javascript
jQuery实现在列表的首行添加数据
2015/05/19 Javascript
给angular加上动画效遇到的问题总结
2016/02/17 Javascript
jQuery实现左侧导航模块的显示与隐藏效果
2016/07/04 Javascript
js 实现一些跨浏览器的事件方法详解及实例
2016/10/27 Javascript
JavaScript 轮播图和自定义滚动条配合鼠标滚轮分享代码贴
2016/10/28 Javascript
使用jQuery实现页面定时弹出广告效果
2017/08/24 jQuery
ES6 javascript中class静态方法、属性与实例属性用法示例
2017/10/30 Javascript
JavaScript实现计算多边形质心的方法示例
2018/01/31 Javascript
python利用MethodType绑定方法到类示例代码
2017/08/27 Python
python使用epoll实现服务端的方法
2018/10/16 Python
python+selenium select下拉选择框定位处理方法
2019/08/24 Python
在python中使用pymysql往mysql数据库中插入(insert)数据实例
2020/03/02 Python
python3 正则表达式基础廖雪峰
2020/03/25 Python
3分钟看懂Python后端必须知道的Django的信号机制
2020/07/26 Python
菲律宾领先的在线时尚商店:Zalora菲律宾
2018/02/08 全球购物
Oral-B荷兰:牙医最推荐的品牌
2020/02/25 全球购物
Timberland俄罗斯官方网上商店:全球领先的户外品牌
2020/03/15 全球购物
行政主管岗位职责
2013/11/18 职场文书
四风查摆问题及整改措施
2014/10/10 职场文书
2014年学生会个人工作总结
2014/11/07 职场文书
2014年法院工作总结
2014/11/24 职场文书
英文慰问信
2015/02/14 职场文书
创业计划书详解
2019/07/19 职场文书
mybatis3中@SelectProvider传递参数方式
2021/08/04 Java/Android
Python学习之os包使用教程详解
2022/03/21 Python
详解Python内置模块Collections
2022/03/22 Python