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 29 Python
Python二分查找详解
Sep 13 Python
numpy中索引和切片详解
Dec 15 Python
Python中的集合介绍
Jan 28 Python
一文秒懂python读写csv xml json文件各种骚操作
Jul 04 Python
Tensorflow实现神经网络拟合线性回归
Jul 19 Python
Python 实现文件读写、坐标寻址、查找替换功能
Sep 11 Python
手动安装python3.6的操作过程详解
Jan 13 Python
python如何进入交互模式
Jul 06 Python
python switch 实现多分支选择功能
Dec 21 Python
用60行代码实现Python自动抢微信红包
Feb 04 Python
分享提高 Python 代码的可读性的技巧
Mar 03 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
《逃离塔科夫》——“萌新劝退,老手自嗨”的硬核FPS游戏
2020/04/03 其他游戏
十天学会php(2)
2006/10/09 PHP
Godaddy空间Zend Optimizer升级方法
2010/05/10 PHP
Yii2中关联查询简单用法示例
2016/08/10 PHP
PHP正则匹配反斜杠'\'和美元'$'的方法
2017/02/08 PHP
PHP简单获取随机数的常用方法小结
2017/06/07 PHP
PHP微信发送推送消息乱码的解决方法
2019/02/28 PHP
PHP下用Swoole实现Actor并发模型的方法
2019/06/12 PHP
PHP使用HTML5 FormData对象提交表单操作示例
2019/07/02 PHP
js中浮点型运算BUG的解决方法说明
2014/01/06 Javascript
JQuery动画与特效实例分析
2015/02/02 Javascript
Javascript中实现trim()函数的两种方法
2015/02/04 Javascript
AngularJS使用ngMessages进行表单验证
2015/12/27 Javascript
jQuery动态添加及删除表单上传元素的方法(附demo源码下载)
2016/01/15 Javascript
基于jquery实现智能表单验证操作
2016/05/09 Javascript
JavaScript中三种常见的排序方法
2017/02/24 Javascript
详解react关于事件绑定this的四种方式
2018/03/09 Javascript
javascript设计模式 ? 代理模式原理与用法实例分析
2020/04/16 Javascript
[54:27]TNC vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
python网络编程学习笔记(二):socket建立网络客户端
2014/06/09 Python
Python中的exec、eval使用实例
2014/09/23 Python
Django 2.0版本的新特性抢先看!
2018/01/05 Python
对python特殊函数 __call__()的使用详解
2019/07/02 Python
安装并免费使用Pycharm专业版(学生/教师)
2020/09/24 Python
python飞机大战游戏实例讲解
2020/12/04 Python
什么是Smarty变量操作符?如何使用Smarty变量操作符
2014/07/18 面试题
超市开业庆典策划方案
2014/05/14 职场文书
某某同志考察材料
2014/05/28 职场文书
银行优秀员工事迹材料
2014/05/29 职场文书
教育专业毕业生推荐信
2014/07/10 职场文书
2014年村委会工作总结
2014/11/24 职场文书
五年级小学生评语
2014/12/26 职场文书
工作自我推荐信范文
2015/03/25 职场文书
民事起诉书范本
2015/05/19 职场文书
python b站视频下载的五种版本
2021/05/27 Python
Go语言实现Base64、Base58编码与解码
2021/07/26 Golang