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处理RSS、ATOM模块FEEDPARSER介绍
Feb 18 Python
使用Pyinstaller的最新踩坑实战记录
Nov 08 Python
python3利用smtplib通过qq邮箱发送邮件方法示例
Dec 03 Python
python跳过第一行快速读取文件内容的实例
Jul 12 Python
Python面向对象之静态属性、类方法与静态方法分析
Aug 24 Python
Python字符串通过'+'和join函数拼接新字符串的性能测试比较
Mar 05 Python
Python数据类型之Tuple元组实例详解
May 08 Python
用python打印菱形的实操方法和代码
Jun 25 Python
Python 如何提高元组的可读性
Aug 26 Python
opencv 图像轮廓的实现示例
Jul 08 Python
python上下文管理的使用场景实例讲解
Mar 03 Python
Python列表删除重复元素与图像相似度判断及删除实例代码
May 07 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实现基于openssl的加密解密方法
2016/09/30 PHP
windows下的WAMP环境搭建图文教程(推荐)
2017/07/27 PHP
PHP实现搜索时记住状态的方法示例
2018/05/11 PHP
PHP实现基本留言板功能原理与步骤详解
2020/03/26 PHP
JavaScript 拖拉缩放效果
2008/12/10 Javascript
url 编码 js url传参中文乱码解决方案
2010/04/11 Javascript
javascript学习笔记(七) js函数介绍
2012/06/19 Javascript
javascript/jquery获取地址栏url参数的方法
2014/03/05 Javascript
按下回车键指向下一个位置的一个函数代码
2014/03/10 Javascript
基于 Docker 开发 NodeJS 应用
2014/07/30 NodeJs
jquery实现右键菜单插件
2015/03/29 Javascript
jQuery实现的背景动态变化导航菜单效果
2015/08/24 Javascript
jQuery组件easyui基本布局实现代码
2016/08/25 Javascript
js原生跨域_用script标签的简单实现
2016/09/24 Javascript
JavaScript简单验证表单空值及邮箱格式的方法
2017/01/20 Javascript
Angularjs 双向绑定时字符串的转换成数字类型的问题
2017/06/12 Javascript
解决ztree搜索中多级菜单展示不全问题
2017/07/05 Javascript
AngularJS点击添加样式、点击变色设置的实例代码
2017/07/27 Javascript
create-react-app 修改为多入口编译的方法
2018/08/01 Javascript
vue 界面刷新数据被清除 localStorage的使用详解
2018/09/16 Javascript
VUE搭建手机商城心得和遇到的坑
2019/02/21 Javascript
如何在Vue中抽离接口配置文件
2019/10/31 Javascript
JavaScript内置对象之Array的使用小结
2020/05/12 Javascript
解决Vue的项目使用Element ui 走马灯无法实现的问题
2020/08/03 Javascript
python使用wmi模块获取windows下硬盘信息的方法
2015/05/15 Python
Django如何实现内容缓存示例详解
2017/09/24 Python
python自动12306抢票软件实现代码
2018/02/24 Python
python如何解析配置文件并应用到项目中
2019/06/27 Python
如何在Cloud Studio上执行Python代码?
2019/08/09 Python
Python 3 使用Pillow生成漂亮的分形树图片
2019/12/24 Python
Pycharm远程连接服务器并实现代码同步上传更新功能
2020/02/25 Python
Python tkinter之ComboBox(下拉框)的使用简介
2021/02/05 Python
情况说明书格式范文
2014/05/06 职场文书
乡镇干部先进性教育活动个人整改措施
2014/09/16 职场文书
如何搭建 MySQL 高可用高性能集群
2021/06/21 MySQL
Javascript的promise,async和await的区别详解
2022/03/24 Javascript