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从sqlite读取并显示数据的方法
May 08 Python
一步步教你用Python实现2048小游戏
Jan 19 Python
Python的SimpleHTTPServer模块用处及使用方法简介
Jan 22 Python
对Python subprocess.Popen子进程管道阻塞详解
Oct 29 Python
利用Python进行图像的加法,图像混合(附代码)
Jul 14 Python
Python socket模块方法实现详解
Nov 05 Python
python字符串,元组,列表,字典互转代码实例详解
Feb 14 Python
解决Python中导入自己写的类,被划红线,但不影响执行的问题
Jul 13 Python
MAC平台基于Python Appium环境搭建过程图解
Aug 13 Python
python 线程的五个状态
Sep 22 Python
详解python3类型注释annotations实用案例
Jan 20 Python
Python List remove()实例用法详解
Aug 02 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&&mysql)四
2006/10/09 PHP
PHP调用Webservice实例代码
2011/07/29 PHP
PHP中“简单工厂模式”实例代码讲解
2012/09/04 PHP
PHP实现的下载远程文件类定义与用法示例
2017/07/05 PHP
Yii框架ACF(accessController)简单权限控制操作示例
2019/04/26 PHP
最佳6款用于移动网站开发的jQuery 图片滑块插件小结
2012/07/20 Javascript
jQuery对象数据缓存Cache原理及jQuery.data方法区别介绍
2013/04/07 Javascript
Jquery如何实现点击时高亮显示代码
2014/01/22 Javascript
jquery选择器之属性过滤选择器详解
2014/01/27 Javascript
javascript得到当前页的来路即前一页地址的方法
2014/02/18 Javascript
JavaScript学习笔记之JS对象
2015/01/22 Javascript
JavaScript控制按钮可用或不可用的方法
2015/04/03 Javascript
在Node.js中使用Javascript Generators详解
2016/05/05 Javascript
Vuex之理解state的用法实例
2017/04/19 Javascript
VUE解决微信签名及SPA微信invalid signature问题(完美处理)
2019/03/29 Javascript
vue中的双向数据绑定原理与常见操作技巧详解
2020/03/16 Javascript
用VsCode编辑TypeScript的实现方法
2020/05/07 Javascript
Typescript3.9 常用新特性一览(推荐)
2020/05/14 Javascript
逐行分析鸿蒙系统的 JavaScript 框架(推荐)
2020/09/17 Javascript
python代码制作configure文件示例
2014/07/28 Python
浅谈python中copy和deepcopy中的区别
2017/10/23 Python
python实现远程通过网络邮件控制计算机重启或关机
2018/02/22 Python
Python针对给定列表中元素进行翻转操作的方法分析
2018/04/27 Python
python对视频画框标记后保存的方法
2018/12/07 Python
python实现维吉尼亚算法
2019/03/20 Python
详解numpy的argmax的具体使用
2019/05/27 Python
pandas实现to_sql将DataFrame保存到数据库中
2019/07/03 Python
对DJango视图(views)和模版(templates)的使用详解
2019/07/17 Python
Python3之字节串bytes与字节数组bytearray的使用详解
2019/08/27 Python
解决Tensorflow 使用时cpu编译不支持警告的问题
2020/02/03 Python
friso美素佳儿官方海外旗舰店:荷兰原产原罐
2017/07/03 全球购物
英国助听器购物网站:Hearing Direct
2018/08/21 全球购物
简单而又朴实的个人求职信分享
2013/12/12 职场文书
2014年公务员思想汇报范文:全心全意为人民服务
2014/03/06 职场文书
老公爱的承诺书
2014/03/31 职场文书
SQL注入详解及防范方法
2021/12/06 MySQL