神经网络之万能定理python-pytorch实现,可以拟合任意曲线

神经网络之万能定理python-pytorch实现,可以拟合任意曲线

博主,这几天一直在做这个曲线拟合的实验,讲道理,网上可能也有很多这方面的资料,但是博主其实试了很多,效果只能对一般的曲线还行,稍微复杂一点的,效果都不太好,后来博主经过将近一天奋战终于得到了这个最好的结果:

代码:

from turtle import shape
import torch
from torch import nn
import pandas as pd
import numpy as np
from scipy.optimize import curve_fit
import matplotlib.pyplot as plt
from  utils import  parameters
from scipy.optimize import leastsq
from turtle import title
import numpy as np
import matplotlib.pyplot as plt
import torch as t
from torch.autograd import Variable as varclass BP(t.nn.Module):def __init__(self):super(BP,self).__init__()self.linear1 = t.nn.Linear(1,100)self.s = t.nn.Sigmoid()self.linear2 = t.nn.Linear(100,10)self.relu = t.nn.Tanh()self.linear3 = t.nn.Linear(10,1)self.Dropout = t.nn.Dropout(p = 0.1)self.criterion = t.nn.MSELoss()self.opt = t.optim.SGD(self.parameters(),lr=0.01)def forward(self, input):y = self.linear1(input)y = self.relu(y)#  y=self.Dropout(y)y = self.linear2(y)y = self.relu(y)# y=self.Dropout(y)y = self.linear3(y)y = self.relu(y)return yclass BackPropagationEx:def __init__(self):self.popt=[]#def  fun(self,t,a,Smax,S0,t0):#           return Smax - (Smax-S0) * np.exp(-a * (t-t0));def curve_fitm(self,x,y,epoch):xs =x.reshape(-1,1)xs=(xs-xs.min())/(xs.max()-xs.min())#   print(xs)ys = yys=(ys-ys.min())/(ys.max()-ys.min())xs = var(t.Tensor(xs))ys = var(t.Tensor(ys))#   bp = BP(traindata=traindata,labeldata=labeldata,node=[1,6,1],epoch=1000,lr=0.01)#  predict=updata(10,traindata,labeldata)model=BP()for e in range(epoch):#   print(e)index=0ls=0for x in xs:y_pre = model(x)#   print(y_pre)loss = model.criterion(y_pre,ys[index])index=index+1#       print("loss",loss)ls=ls+loss# Zero gradientsmodel.opt.zero_grad()# perform backward passloss.backward()# update weightsmodel.opt.step()if(e%2==0 ):print(e,ls)ys_pre = model(xs)loss = model.criterion(y_pre,ys)print(loss)plt.title("curve")plt.plot(xs.data.numpy(),ys.data.numpy(),label="ys")plt.plot(xs.data.numpy(),ys_pre.data.numpy(),label="ys_pre")plt.legend()plt.show()def predict(self,x):return self.fun(x,*self.popt)def plot(self,x,y,predict):plt.plot(x,y,'bo')#绘制拟合后的点plt.plot(x,predict,'r-')#拟合的参数通过*popt传入plt.title("BP神经网络")plt.show()

来看一下结果:
在这里插入图片描述

你们可能觉得这个拟合好像也一般啊,其实不是,我这个问题非常难,基本上网上的代码都是拟合效果很差的,数据的话,感兴趣的,可以私聊我,我可以发给你们。
这个实现想做到博主这个效果的,很难,因为博主做了大量实现,发现,其实严格意义上的万能定理的实现其实是需要很多的考虑的。
另外随着训练轮数和神经元的增加,实际上我们的效果可以真正实现万能定理。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/715598.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java之抽象类

什么是抽象类? 抽象就是不能具体化,不能实例化 作为父类,让子类去实现 abstract修饰类就是抽象类 abstract修饰方法就是抽象方法修饰符 abstract class 类名{修饰符 abstract 返回值类型 方法名(形参列表); }public abstract class A {//不…

CTFHUB--文件包含漏洞--RCE

文件包含漏洞 文件包含漏洞也是一种注入型漏洞,其本质就是输入一段用户能够控制的脚本或者代码,并让服务端执行。有时候由于网站功能需求,会让前端用户选择要包含的文件,而开发人员又没有对要包含的文件进行安全考虑,…

CSS【详解】居中对齐 (水平居中 vs 垂直居中)

水平居中 内部块级元素的宽度要小于容器(父元素) 方案一&#xff1a;文本居中对齐&#xff08;内联元素&#xff09; 限制条件&#xff1a;仅用于内联元素 display:inline 和 display: inline-block; 给容器添加样式 text-align:center<!DOCTYPE html> <html lang&q…

裴蜀定理(Bézout’s identity)

裴蜀定理&#xff08;Bzout’s identity&#xff09;是一个数论定理&#xff0c;也称为贝祖等式。它表明&#xff0c;对于任意给定的两个整数 a a a 和 b b b&#xff0c;存在整数 x x x 和 y y y&#xff0c;使得它们满足以下方程&#xff1a; a x b y gcd ⁡ ( a , b )…

【简略知识】项目开发中,VO,BO,PO,DO,DTO究竟是何方妖怪?

前言 在项目开发中&#xff0c;是否需要定义VO&#xff08;视图对象&#xff09;&#xff0c;BO&#xff08;业务对象&#xff09;&#xff0c;PO&#xff08;持久化对象&#xff09;&#xff0c;DO&#xff08;领域对象&#xff09;&#xff0c;DTO&#xff08;数据传输对象&…

CKKS EXPLAINED, PART 3: ENCRYPTION AND DECRYPTION

CKKS EXPLAINED, PART 3: ENCRYPTION AND DECRYPTION Introduction 在之前的文章中&#xff0c;CKKS解释了第二部分&#xff1a;完整的编码和解码&#xff0c;我们看到了如何实现CKKS的编码器和解码器&#xff0c;这使我们能够将向量转换为多项式&#xff0c;反之亦然。这一步…

笨办法学 Python3 第五版(预览)(三)

原文&#xff1a;Learn Python the Hard Way, 5th Edition (Early Release) 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 练习 30&#xff1a;假如 这是你将要输入的下一个 Python 脚本&#xff0c;它向你介绍了if语句。输入这个代码&#xff0c;确保它能够完美运行…

怎么快速编辑视频

背景&#xff1a;怎么简单快速编辑视频 利用FFmpeg功能&#xff0c;简单快速编辑视频&#xff0c;如按9:16提前剪切视频、替换背景音乐。 下载FFmpeg&#xff1a;https://ffmpeg.org/download.html 将FFmpeg的路径添加到环境变量中&#xff1a; Windows&#xff1a;在系统的环…

Home-credit海外贷款信贷产品源码/线上贷款产品大全/贷款平台软件源码/海外借贷平台

测试环境&#xff1a;Linux系统CentOS7.6、宝塔、PHP7.3、MySQL5.6&#xff0c;根目录public&#xff0c;伪静态laravel5&#xff0c;开启ssl证书 语言&#xff1a;中文简体、英文 laravel框架的程序有点多&#xff0c;这个团队估计主要就是搞laravel开发的&#xff0c;基本上…

前端架构: 脚手架通用框架封装之脚手架注册和命令注册开发(教程二)

脚手架注册和命令注册 1 &#xff09;脚手架的注册 接上文&#xff0c;仍旧在 abc-cli 项目中参考&#xff1a;https://blog.csdn.net/Tyro_java/article/details/136381086之前初始化的时候&#xff0c;使用的是 yargs, 现在我们想要使用 commander在cli包中安装 commander $…

2024 最新版 Compose material3 下拉刷新

2024 最新版 Compose material3 下拉刷新&#xff0c;版本 > 1.2.0 的 compose material3 已经更新了下拉刷新组件的 Api 见 https://developer.android.com/jetpack/androidx/releases/compose-material3?hlzh-cn#1.2.0 使用方法&#xff1a;https://developer.android.…

YOLOv9独家原创改进|增加SPD-Conv无卷积步长或池化:用于低分辨率图像和小物体的新 CNN 模块

专栏介绍&#xff1a;YOLOv9改进系列 | 包含深度学习最新创新&#xff0c;主力高效涨点&#xff01;&#xff01;&#xff01; 一、文章摘要 卷积神经网络(CNNs)在计算即使觉任务中如图像分类和目标检测等取得了显著的成功。然而&#xff0c;当图像分辨率较低或物体较小时&…

可以用来测试的接口

实际开发过程中&#xff0c;我们可以通过postman工具来测试接口 get请求 https://api.github.com/events?id1&nameuser post请求 http://httpbin.org/post 参数1&#xff1a;key1value1 参数2&#xff1a;key2value2

(C语言)回调函数

回调函数是什么&#xff1f; 回调函数就是⼀个通过函数指针调⽤的函数。 如果你把函数的指针&#xff08;地址&#xff09;作为参数传递给另⼀个函数&#xff0c;当这个指针被⽤来调⽤其所指向的函数 时&#xff0c;被调⽤的函数就是回调函数。回调函数不是由该函数的实现⽅…

技术阅读周刊第十四期:常用的 Git 配置

技术阅读周刊&#xff0c;每周更新。 历史更新 20231122&#xff1a;第十一期20231129&#xff1a;第十二期20240105&#xff1a;第十三期&#xff1a;一些提高生产力的终端命令20240112&#xff1a;第十四期&#xff1a;Golang 作者 Rob Pike 在 GopherConAU 上的分享 How I w…

探索Manticore Search:开源全文搜索引擎的强大功能

在当今信息爆炸的时代&#xff0c;数据的快速检索变得至关重要。无论是在电子商务网站、新闻门户还是企业内部文档&#xff0c;高效的搜索引擎都是确保用户满意度和工作效率的关键因素之一。而在搜索引擎领域&#xff0c;Manticore Search 作为一款开源的全文搜索引擎&#xff…

大模型(LLM)的量化技术Quantization原理学习

在自然语言处理领域&#xff0c;大型语言模型&#xff08;LLM&#xff09;在自然语言处理领域的应用越来越广泛。然而&#xff0c;随着模型规模的增大&#xff0c;计算和存储资源的需求也急剧增加。为了降低计算和存储开销&#xff0c;同时保持模型的性能&#xff0c;LLM大模型…

2024最新算法:鹦鹉优化算法(Parrot optimizer,PO)求解23个基准函数(提供MATLAB代码)

一、鹦鹉优化算法 鹦鹉优化算法&#xff08;Parrot optimizer&#xff0c;PO&#xff09;由Junbo Lian等人于2024年提出的一种高效的元启发式算法&#xff0c;该算法从驯养的鹦鹉中观察到的觅食、停留、交流和对陌生人行为的恐惧中汲取灵感。这些行为被封装在四个不同的公式中…

c语言--qsort函数(详解)

目录 一、定义二、用qsort函数排序整型数据三、用qsort排序结构数据四、qsort函数的模拟实现 一、定义 二、用qsort函数排序整型数据 #include<stdio.h> scanf_S(int *arr,int sz) {for (int i 0; i < sz; i){scanf("%d", &arr[i]);} } int int_cmp(c…

消息队列kafka

消息队列解决的问题 1. 解耦&#xff0c;通过消息队列实现应用之间解耦&#xff0c;模块儿之间解耦 2. 跨线程/进程通信&#xff0c;通过消息队列传递数据&#xff0c;实现不同线程/进程间通信 3. 提升系统稳定性&#xff0c;在高并发场景通过消息队列缓冲&#xff0c;可以实…