pytorch-神经网络拟合曲线实例


Posted in Python onJanuary 15, 2020

代码已经调通,跑出来的效果如下:

pytorch-神经网络拟合曲线实例

# coding=gbk
import torch
import matplotlib.pyplot as plt
from torch.autograd import Variable
import torch.nn.functional as F
 
'''
 Pytorch是一个拥有强力GPU加速的张量和动态构建网络的库,其主要构建是张量,所以可以把PyTorch当做Numpy
 来用,Pytorch的很多操作好比Numpy都是类似的,但是其能够在GPU上运行,所以有着比Numpy快很多倍的速度。
 训练完了,发现隐层越大,拟合的速度越是快,拟合的效果越是好
'''
 
def train():
 print('------  构建数据集  ------')
 # torch.linspace是为了生成连续间断的数据,第一个参数表示起点,第二个参数表示终点,第三个参数表示将这个区间分成平均几份,即生成几个数据
 x = torch.unsqueeze(torch.linspace(-1, 1, 100), dim=1)
 #torch.rand返回的是[0,1]之间的均匀分布 这里是使用一个计算式子来构造出一个关联结果,当然后期要学的也就是这个式子
 y = x.pow(2) + 0.2 * torch.rand(x.size())
 # Variable是将tensor封装了下,用于自动求导使用
 x, y = Variable(x), Variable(y)
 #绘图展示
 plt.scatter(x.data.numpy(), y.data.numpy())
 #plt.show()
 
 print('------  搭建网络  ------')
 #使用固定的方式继承并重写 init和forword两个类
 class Net(torch.nn.Module):
  def __init__(self,n_feature,n_hidden,n_output):
   #初始网络的内部结构
   super(Net,self).__init__()
   self.hidden=torch.nn.Linear(n_feature,n_hidden)
   self.predict=torch.nn.Linear(n_hidden,n_output)
  def forward(self, x):
   #一次正向行走过程
   x=F.relu(self.hidden(x))
   x=self.predict(x)
   return x
 net=Net(n_feature=1,n_hidden=1000,n_output=1)
 print('网络结构为:',net)
 
 print('------  启动训练  ------')
 loss_func=F.mse_loss
 optimizer=torch.optim.SGD(net.parameters(),lr=0.001)
 
 #使用数据 进行正向训练,并对Variable变量进行反向梯度传播 启动100次训练
 for t in range(10000):
  #使用全量数据 进行正向行走
  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='+str(loss.data[0]),fontdict={'size':20,'color':'red'})
   plt.pause(0.1)
 plt.ioff()
 plt.show()
 print('------  预测和可视化  ------')
 
if __name__=='__main__':
 train()

以上这篇pytorch-神经网络拟合曲线实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python编程-将Python程序转化为可执行程序[整理]
Apr 09 Python
python实现简单聊天应用 python群聊和点对点均实现
Sep 14 Python
PyTorch读取Cifar数据集并显示图片的实例讲解
Jul 27 Python
用python实现刷点击率的示例代码
Feb 21 Python
详解Python函数式编程—高阶函数
Mar 29 Python
python自动化之Ansible的安装教程
Jun 13 Python
django settings.py 配置文件及介绍
Jul 15 Python
Python中 CSV格式清洗与转换的实例代码
Aug 29 Python
如何在python开发工具PyCharm中搭建QtPy环境(教程详解)
Feb 04 Python
TensorFlow实现指数衰减学习率的方法
Feb 05 Python
Matlab如何实现矩阵复制扩充
Jun 02 Python
PyQt5结合QtDesigner实现文本框读写操作
Jun 11 Python
Pytorch中的VGG实现修改最后一层FC
Jan 15 #Python
详解Python3 中的字符串格式化语法
Jan 15 #Python
用pytorch的nn.Module构造简单全链接层实例
Jan 14 #Python
pytorch三层全连接层实现手写字母识别方式
Jan 14 #Python
Python实现bilibili时间长度查询的示例代码
Jan 14 #Python
基于python监控程序是否关闭
Jan 14 #Python
关于pytorch中全连接神经网络搭建两种模式详解
Jan 14 #Python
You might like
上传多个文件的PHP脚本
2006/11/26 PHP
php实现事件监听与触发的方法
2014/11/21 PHP
php给图片加文字水印
2015/07/31 PHP
PHP CURL post数据报错 failed creating formpost data
2016/10/16 PHP
简介JavaScript中的setTime()方法的使用
2015/06/11 Javascript
深入了解JavaScript中的Symbol的使用方法
2015/07/28 Javascript
js获取元素的标签名实现方法
2016/10/08 Javascript
Vue框架中正确引入JS库的方法介绍
2017/07/30 Javascript
简单谈谈关于Angular Cli打包的事
2017/09/05 Javascript
layui结合form,table的全选、反选v1.0示例讲解
2018/08/15 Javascript
vue+vuex+json-seiver实现数据展示+分页功能
2019/04/11 Javascript
js中的深浅拷贝问题简析
2019/05/10 Javascript
Vue-drag-resize 拖拽缩放插件的使用(简单示例)
2019/12/04 Javascript
vue实现购物车加减
2020/05/30 Javascript
[04:38]完美世界携手游戏风云打造 卡尔工作室饰品系统篇
2013/04/25 DOTA
python中zip和unzip数据的方法
2015/05/27 Python
简单了解Python下用于监视文件系统的pyinotify包
2015/11/13 Python
Python基于二分查找实现求整数平方根的方法
2016/05/12 Python
Python拼接字符串的7种方法总结
2018/11/01 Python
对Python3 goto 语句的使用方法详解
2019/02/16 Python
手把手教你使用Python创建微信机器人
2019/04/29 Python
区分python中的进程与线程
2020/08/13 Python
python实现学生信息管理系统源码
2021/02/22 Python
CSS中越界问题的经典解决方案【推荐】
2016/04/19 HTML / CSS
Fossil美国官网:化石手表、手袋、首饰及配饰
2019/02/17 全球购物
性能测试工程师的面试题
2015/02/20 面试题
人力资源专员自我评价怎么写
2013/09/19 职场文书
计算机应届毕业生自荐信范文
2014/02/23 职场文书
财务科科长岗位职责
2014/03/10 职场文书
《锄禾》教学反思
2014/04/08 职场文书
厨房管理计划书
2014/04/27 职场文书
2014年度培训工作总结
2014/11/27 职场文书
2014年高二班主任工作总结
2014/12/16 职场文书
详细聊聊vue中组件的props属性
2021/11/02 Vue.js
JavaScript中reduce()的用法
2022/05/11 Javascript
vue中data里面的数据相互使用方式
2022/06/05 Vue.js