matlab数学建模-神经网络:测试不同隐藏层神经元的个数、更改学习函数

2023-11-09

目录

通过误差,和训练步数对比,确定隐含层个数,并检验隐含层个数对性能的影响。

1)trainlm 算法

 2)traingdm 算法

 3)trainrp 算法

 4) traingdx 算法

 5)traincgf 算法


通过误差,和训练步数对比,确定隐含层个数,并检验隐含层个数对性能的影响。

隐藏层范围是按设计经验公式,和本例实际情况,选的 9:16

%变量x范围
x=-4:0.01:4;
%输入目标函数
y1=sin((1/2)*pi*x)+sin(pi*x);
%隐藏层的神经元个数
s=9:16;
%欧式距离
res=1:8;
%选不同的隐藏层数目,进行网络测试
for i=1:8
%建立前向型BP网络,输入层和隐藏层激励函数为tansig, 输出层为purelin
%训练函数为trainlm,也是默认函数
net=newff(minmax(x),[1,s(i),1],{'tansig','tansig','purelin'},'trainlm');
%训练步数最大200
net.trainparam.epochs=2000;
%设定目标误差0.00001
net.trainparam.goal=0.00001;
%训练
net=train(net,x,y1);
%仿真
y2=sim(net,x);
%求欧式距离,判定性能
    err=y2-y1;
    res(i)=norm(err);
end

运行结果

 

 各种BP网络学习算法采用了不同的学习函数,所以这里只需要更改学习函数。

1)trainlm 算法

%变量x范围
x=-4:0.01:4;
%输入目标函数
y1=sin((1/2)*pi*x)+sin(pi*x);
%建立前向型BP网络,输入层和隐藏层激励函数为tansig, 输出层为purelin
%训练函数为trainlm,也是默认函数
net=newff(minmax(x),[1,s(i),1],{'tansig','tansig','purelin'},'trainlm');
%训练步数最大200
net.trainparam.epochs=2000;
%设定目标误差0.00001
net.trainparam.goal=0.00001;
%训练
net=train(net,x,y1);
%仿真
y2=sim(net,x);
%求欧式距离,判定性能
err=y2-y1;
res(i)=norm(err);
plot(x,y1);
hold on
plot(x,y2,'r+');

仿真得到的 网络误差曲线(左)和网络仿真曲线(右)

注意网络仿真曲线,'r+' 是网络仿真,'——'是目标曲线

 2)traingdm 算法

%变量x范围
x=-4:0.01:4;
%输入目标函数
y1=sin((1/2)*pi*x)+sin(pi*x);
%建立前向型BP网络,输入层和隐藏层激励函数为tansig, 输出层为purelin
%训练函数为trainlm,也是默认函数
net=newff(minmax(x),[1,s(i),1],{'tansig','tansig','purelin'},'traingdm');
%训练步数最大200
net.trainparam.epochs=2000;
%设定目标误差0.00001
net.trainparam.goal=0.00001;
%训练
net=train(net,x,y1);
%仿真
y2=sim(net,x);
%求欧式距离,判定性能
err=y2-y1;
res(i)=norm(err);
plot(x,y1);
hold on
plot(x,y2,'r+');

仿真得到的 网络误差曲线(左)和网络仿真曲线(右)

注意网络仿真曲线,'r+' 是网络仿真,'——'是目标曲线

 3)trainrp 算法

%变量x范围
x=-4:0.01:4;
%输入目标函数
y1=sin((1/2)*pi*x)+sin(pi*x);
%建立前向型BP网络,输入层和隐藏层激励函数为tansig, 输出层为purelin
%训练函数为trainlm,也是默认函数
net=newff(minmax(x),[1,s(i),1],{'tansig','tansig','purelin'},'trainrp');
%训练步数最大200
net.trainparam.epochs=2000;
%设定目标误差0.00001
net.trainparam.goal=0.00001;
%训练
net=train(net,x,y1);
%仿真
y2=sim(net,x);
%求欧式距离,判定性能
err=y2-y1;
res(i)=norm(err);
plot(x,y1);
hold on
plot(x,y2,'r+');

仿真得到的 网络误差曲线(左)和网络仿真曲线(右)

注意网络仿真曲线,'r+' 是网络仿真,'——'是目标曲线

 4) traingdx 算法

%变量x范围
x=-4:0.01:4;
%输入目标函数
y1=sin((1/2)*pi*x)+sin(pi*x);
%建立前向型BP网络,输入层和隐藏层激励函数为tansig, 输出层为purelin
%训练函数为trainlm,也是默认函数
net=newff(minmax(x),[1,s(i),1],{'tansig','tansig','purelin'},'traingdx');
%训练步数最大200
net.trainparam.epochs=2000;
%设定目标误差0.00001
net.trainparam.goal=0.00001;
%训练
net=train(net,x,y1);
%仿真
y2=sim(net,x);
%求欧式距离,判定性能
err=y2-y1;
res(i)=norm(err);
plot(x,y1);
hold on
plot(x,y2,'r+');

仿真得到的 网络误差曲线(左)和网络仿真曲线(右)

注意网络仿真曲线,'r+' 是网络仿真,'——'是目标曲线

 5)traincgf 算法

%变量x范围
x=-4:0.01:4;
%输入目标函数
y1=sin((1/2)*pi*x)+sin(pi*x);
%建立前向型BP网络,输入层和隐藏层激励函数为tansig, 输出层为purelin
%训练函数为trainlm,也是默认函数
net=newff(minmax(x),[1,s(i),1],{'tansig','tansig','purelin'},'traincgf');
%训练步数最大200
net.trainparam.epochs=2000;
%设定目标误差0.00001
net.trainparam.goal=0.00001;
%训练
net=train(net,x,y1);
%仿真
y2=sim(net,x);
%求欧式距离,判定性能
err=y2-y1;
res(i)=norm(err);
plot(x,y1);
hold on
plot(x,y2,'r+');

仿真得到的 网络误差曲线(左)和网络仿真曲线(右)

注意网络仿真曲线,'r+' 是网络仿真,'——'是目标曲线

不确定性因素,会对网络训练有不同的影响,产生不同的效果。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

matlab数学建模-神经网络:测试不同隐藏层神经元的个数、更改学习函数 的相关文章

  • MATLAB:比较两个不同长度的数组

    我有两个长度不同的数组 由于采样率不同 需要比较 我想对较大的数组进行下采样以匹配较小的数组的长度 但是该因子不是整数而是小数 举个例子 a 1 1 375 1 75 2 125 2 5 2 875 3 25 b 1 2 3 有什么方法可以
  • 如何从绘图处理程序中绘图?

    我有绘图的处理程序或图形的处理程序 例子 h plot 1 0 2 10 xx get h xx DisplayName Annotation 1x1 handle Color 0 0 1 LineStyle LineWidth 0 500
  • 通过傅里叶空间填充进行插值

    我最近尝试在 matlab 上实现一个在傅立叶域中使用零填充的插值方法的简单示例 但我无法正常工作 我总是有一个小的频移 在傅里叶空间中几乎不可见 但它在时空上产生了巨大的误差 由于傅里叶空间中的零填充似乎是一种常见 且快速 的插值方法 因
  • 从 imread 返回的 ndims

    我正在从文件夹中选取图像 尺寸为128 128 为此 我使用以下代码行 FileName PathName uigetfile jpg Select the Cover Image file fullfile PathName FileNa
  • 如何每次使用按钮将数据添加到 MATLAB 中的现有 XLSX 文件?

    我有一个函数可以生成一些变量 例如分数 对 错 未回答 使用按钮调用此功能 问题是如何每次将函数生成的这些值添加 附加到 XLSX 文件中 或者 如何创建 MAT 文件以便可以添加它 可能的解决方案是什么 附加到 xls 文件所涉及的挑战是
  • 如何获取MATLAB句柄对象的ID?

    当我尝试使用时出现问题MATLAB 句柄对象 http www mathworks com help techdoc ref handle html作为关键值MATLAB 容器 Map http www mathworks com help
  • 检查图像中是否有太薄的区域

    我正在尝试验证雕刻机的黑白图像 更多的是剪贴画图像 不是照片 我需要考虑的主要事情之一是区域的大小 或线条的宽度 因为机器无法处理太细的线条 所以我需要找到比给定阈值更细的区域 以此图为例 竖琴的琴弦可能太细而无法雕刻 我正在阅读有关 Ma
  • 如何在向量中的所有点之间绘制线?

    我有一个包含二维空间中一些点的向量 我希望 MATLAB 用从每个点到每个其他点绘制的线来绘制这些点 基本上 我想要一个所有顶点都连接的图 你能用情节来做到这一点吗 如果可以 怎么做 一种解决方案是使用该函数为每个点组合创建一组索引MESH
  • 从 MATLAB 调用 Java?

    我想要Matlab程序调用java文件 最好有一个例子 需要考虑三种情况 Java 内置库 也就是说 任何描述的here http docs oracle com javase 6 docs api 这些项目可以直接调用 例如 map ja
  • Matlab:条形图中缺少标签

    使用 Matlab 2012 和 2013 我发现设置XTickLabel on a bar图表最多只能使用 15 个柱 如果条形较多 则标签会丢失 如下所示 绘制 15 个条形图 N 15 x 1 N labels num2str x d
  • Numpy 相当于 MATLAB 的 hist [重复]

    这个问题在这里已经有答案了 由于某种原因 Numpy 的 hist 总是返回比 MATLAB 的 hist 少 1 个 bin 例如在 MATLAB 中 x 1 2 2 2 1 4 4 2 3 3 3 3 Rep Val hist x un
  • matlab中无限while嵌套在for循环中

    我想做一个while循环 嵌套在for在 Matlab 中循环以查找数据中不同对之间的距离 我的数据具有以下形式 ID lon lat time 1 33 56 40 89 803 2 32 45 41 03 803 3 35 78 39
  • Ilnumerics Ilpanel 在 winform 中编译成 dll 并加载到 matlab 时不激活

    我想将 Visual studio 2012 中用 C 编写的 winform 编译为 dll 然后将其加载到 matlab 2013a 中 然后 我想使用 matlab net 接口与 winform 进行交互 侦听其事件并通过一组预定义
  • matlab中更快的插值方法

    我正在使用 interp1 来插值一些数据 temp 4 30 4 rand 365 10 depth 1 10 dz 0 5 define new depth interval bthD min depth dz max depth ne
  • Matlab:3D 堆积条形图

    我正在尝试创建一个 3D 堆积条形图 如这个问题所示 Matlab 中的 3D 堆叠条形图 https stackoverflow com questions 13156133 3d stacked bars in matlab 5D 然而
  • 将 Matlab 数组移植到 C/C++

    我正在将 matlab 程序移植到 C C 我有几个问题 但最重要的问题之一是 Matlab 将任何维度的数组都视为相同 假设我们有一个这样的函数 function result f A B C result A 2 B C A B and
  • 如何在 MATLAB 中将矩阵元素除以列总和?

    有没有一种简单的方法可以将每个矩阵元素除以列和 例如 input 1 4 4 10 output 1 5 4 14 4 5 10 14 以下是执行此操作的不同方法的列表 使用bsxfun https www mathworks com he
  • Deploytool for MATLAB R2013b 不起作用,发生了什么变化?

    多年来我一直在使用集成deploytool为我的同事创建易于分发的 exe 文件 我几天前安装了R2013b 但无法使用deploytool不再了 尝试打包时的日志文件给出了以下内容 ant
  • 通过颜色渐变修补圆

    我正在尝试绘制一个颜色渐变 我希望它沿轴均匀 在下图由角度定义的情况下 pi 7 当我使用patch命令 绘图与所需的梯度方向匹配 但沿其方向并不均匀 沿圆的点之间形成各种三角形 这是代码 N 120 theta linspace pi p
  • 轴标注问题

    通过运行我编写的以下 matlab 函数 可以互换图中的 x 轴和 y 轴 谁能告诉我问题出在哪里或者帮我解决它吗 预先感谢您的任何帮助 function axislabeling n x 1 1 n y 1 1 n z zeros n n

随机推荐

  • google扫码库barcode-scanning的使用

    一 加入barcode scanning库 捆绑模式扫码 implementation com google mlkit barcode scanning 17 1 0 二 编写扫码分析类 用于分析扫码数据并回调方法返回结果 package
  • DuiLib使用教程之二---测试工程

    DuiLib测试工程 以下内容为原创 欢迎转载 转载请注明 来自试着不呼吸的博客 http blog csdn net haiqiang softwo article details 21485283 通过上节 http blog csdn
  • 短视频APP是如何开启你的美好生活的?

    欢迎大家前往腾讯云 社区 获取更多腾讯海量技术实践干货哦 本文由腾讯视频云终端团队发表于云 社区专栏 常青 2008 年毕业加入腾讯 一直从事客户端研发相关工作 先后参与过 PC QQ 手机QQ QQ物联 等产品项目 目前在腾讯视频云团队负
  • 多态和虚函数的基本概念和用法

    C 多态 多态按字面的意思就是多种形态 当类之间存在层次结构 并且类之间是通过继承关联时 就会用到多态 C 多态意味着调用成员函数时 会根据调用函数的对象的类型来执行不同的函数 多态的优点 代码组织结构清晰 可读性强 利于前期和后期的扩展以
  • steam++加速问题:出现显示443端口被 vmware-hostd(9860)占用的错误。

    前言 时不可以苟遇 道不可以虚行 今天的的前言诗句特地百度搜索了一下 诗句大概的意思是 时机是不可能随便就能遇到的 道路也要一步一步踏实地行走 象征着好运的诗句 之所以特地去找这样意思的诗句 主要的原因是 今天就是四六级考试 想给自己带来一
  • 利用Python(netCDF4库)读取.nc文件(NetCDF气象数据文件)的基本操作

    NetCDF network Common Data Form 网络通用数据格式是一种面向数组型并适于网络共享的数据的描述和编码标准 目前 NetCDF广泛应用于大气科学 水文 海洋学 环境模拟 地球物理等诸多领域 用户可以借助多种方式方便
  • LeetCode--初级算法--字符串类算法

    反转字符串 题目 编写一个函数 其作用是将输入的字符串反转过来 示例 1 输入 hello 输出 olleh 示例 2 输入 A man a plan a canal Panama 输出 amanaP lanac a nalp a nam
  • flask配置https协议

    感谢https blog csdn net qq 33934427 article details 127456673 文中多有参考再实践 一 要用https协议需要有ca证书 在windows10先下载windows版本openssl 地
  • uni-app (路由)

    介绍 uni app页面路由为框架统一管理 开发者需要在pages json里配置每个路由页面的路径和页面样式 类似的小程序在app json中配置页面路由相同 所以uni app的路由用法与Vue Router不同 如仍希望采用Vue R
  • Android12及所有版本解决没有system读写权限(只需要magisk面具)

    通过magisk挂载文件的方式来修改system 不用解锁system或挂载读写 前提条件 你要确保你已经正确刷入了Magisk 刷面具保姆级别教程 举一反三 多种手机通用 这个方法实际上就相当于刷模块来达到修改的目的 本文只是给小白普及一
  • 时间同步服务chrony的简单配置

    一 chrony服务器的简介 chrony是一个开源自由的网络时间协议 NTP 的客户端和服务器软软件 它能让计算机保持系统时钟与时钟服务器 NTP 同步 因此让你的计算机保持精确的时间 Chrony也可以作为服务端软件为其他计算机提供时间
  • vue-router安装失败

    当安装vue router遇到以下问题 npm ERR code ERESOLVE npm ERR ERESOLVE unable to resolve dependency tree npm ERR npm ERR While resol
  • 食品PC端的轮播图的文字和图片怎么修改

  • C# Winform 窗体传值 利用委托 子窗体传值给父窗体

    常用的Winform窗体传值有两种方式 1 更改Form designer cs文件 将控件的设为Public 供子窗体访问 在designer cs文件的最后 找到你的控件声明 private System Windows Forms T
  • Qt程序打包发布方法(使用官方提供的windeployqt工具)

    Qt程序打包发布方法 使用官方提供的windeployqt工具 Qt 官方开发环境使用的动态链接库方式 在发布生成的exe程序时 需要复制一大堆 dll 如果自己去复制dll 很可能丢三落四 导致exe在别的电脑里无法正常运行 因此 Qt
  • 深入浅出理解视频编码H264结构(内涵福利)

    转自 https www jianshu com p 9522c4a7818d 在国内直播 欣欣向荣 ps 其实大多都亏钱 为的就是炒概念 的年代 相信很多小伙伴也投入了技术的浩瀚大洋当中 ps 其实就是搬砖 日复一日 音 视频的神秘面纱开
  • 区块链100篇之将fabric部署在k8s上

    有了上一篇的基础 这一篇就尝试将fabric部署在k8s上 以下的操作的前提条件是自己已经对docker compose部署fabric比较熟悉了 可以先搞清楚fabricase目录下的fabric raft项目 1 修改DNS 在真正开始
  • DS证据理论浅析

    在DS证据理论中 由互不相容的基本命题 假定 组成的完备集合称为识别框架 表示对某一问题的所有可能答案 但其中只有一个答案是正确的 该框架的子集称为命题 分配给各命题的信任程度称为基本概率分配 BPA 也称m函数 M A 为对A的信任程度大
  • 绿源电动车通过聆讯:​年营收48亿 为倪捷与胡继红家族企业

    雷递网 雷建平 9月20日 绿源集团控股 开曼 有限公司 简称 绿源电动车 日前通过聆讯 准备在香港上市 这意味着时隔近一年后 绿源电动车终于拿到了上市的钥匙 年营收47 8亿 绿源电动车创建于1997年 总部位于浙江金华 绿源产品涵盖电动
  • matlab数学建模-神经网络:测试不同隐藏层神经元的个数、更改学习函数

    目录 通过误差 和训练步数对比 确定隐含层个数 并检验隐含层个数对性能的影响 1 trainlm 算法 2 traingdm 算法 3 trainrp 算法 4 traingdx 算法 5 traincgf 算法 通过误差 和训练步数对比