介绍

上一篇

【MATLAB深度学习工具箱】学习笔记--体脂估计算例再分析:拟合神经网络fitnet里面的数据结构】_bear_miao的博客-CSDN博客原文链接如下【MATLAB深度学习工具箱】学习笔记--体脂估计Body Fat Estimation_bear_miao的博客-CSDN博客介绍本示例展示一个函数拟合神经网络如何根据解剖学测量结果估计体脂。【注:关键词:多维数据 函数拟合 神经网络】问题描述在本例子中根据如下13种身体特征评估体脂。【注:具体的属性特征对学习此解决问题的逻辑影响并不大,知道是许多相关或不相关的多维度特征即可】Age (years)Weight (lbs)Height (inches)Neck circumference https://blog.csdn.net/bear_miao/article/details/121373910?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163715261816780271570843%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=163715261816780271570843&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~rank_v31_ecpm-6-121373910.first_rank_v2_pc_rank_v29&utm_term=fitnet&spm=1018.2226.3001.4187

学习了拟合神经网络fitnet里面的数据结构,本节继续学习拟合神经网络fitnet里面的函数。

net对象如下所示:

>> net
net =
    Neural Network
              name: 'Function Fitting Neural Network'
          userdata: (your custom info)
    dimensions:
         numInputs: 1
         numLayers: 2
        numOutputs: 1
    numInputDelays: 0
    numLayerDelays: 0
 numFeedbackDelays: 0
 numWeightElements: 226
        sampleTime: 1
    connections:
       biasConnect: [1; 1]
      inputConnect: [1; 0]
      layerConnect: [0 0; 1 0]
     outputConnect: [0 1]
    subobjects:
             input: Equivalent to inputs{1}
            output: Equivalent to outputs{2}
            inputs: {1x1 cell array of 1 input}
            layers: {2x1 cell array of 2 layers}
           outputs: {1x2 cell array of 1 output}
            biases: {2x1 cell array of 2 biases}
      inputWeights: {2x1 cell array of 1 weight}
      layerWeights: {2x2 cell array of 1 weight}
    functions:
          adaptFcn: 'adaptwb'
        adaptParam: (none)
          derivFcn: 'defaultderiv'
         divideFcn: 'dividerand'
       divideParam: .trainRatio, .valRatio, .testRatio
        divideMode: 'sample'
           initFcn: 'initlay'
        performFcn: 'mse'
      performParam: .regularization, .normalization
          plotFcns: {'plotperform', 'plottrainstate', 'ploterrhist',
                    'plotregression', 'plotfit'}
        plotParams: {1x5 cell array of 5 params}
          trainFcn: 'trainlm'
        trainParam: .showWindow, .showCommandLine, .show, .epochs,
                    .time, .goal, .min_grad, .max_fail, .mu, .mu_dec,
                    .mu_inc, .mu_max
    weight and bias values:
                IW: {2x1 cell} containing 1 input weight matrix
                LW: {2x2 cell} containing 1 layer weight matrix
                 b: {2x1 cell} containing 2 bias vectors
    methods:
             adapt: Learn while in continuous use
         configure: Configure inputs & outputs
            gensim: Generate Simulink model
              init: Initialize weights & biases
           perform: Calculate performance
               sim: Evaluate network outputs given inputs
             train: Train network with examples
              view: View diagram
       unconfigure: Unconfigure inputs & outputs
    evaluate:       outputs = net(inputs)

里面包含的运算相关的参数如下:

(1)IW;

(2)LW;

(3)b;

(4)inputs.range;inputs.processedRange

(5)outputs.range;outputs.processedRange

如何根据这7类参数计算出最后的拟合结果?

netfit的计算公式

原始数据

根据net.IW可得下式,记为

>> W1=net.IW{1}
W1 =
   -0.0643   -0.5102   -0.3899   -1.1452   -0.6156   -0.5644   -0.8229   -0.4793   -1.4119   -0.0568   -0.4892    0.1450   -2.0693
   -3.3754    0.9086    0.4771    1.2751   -0.9957    0.7283   -0.2105   -0.9506    0.6034   -1.4836   -0.4590    0.8682    0.0842
   -0.9134    1.9986    0.3363    0.0187    1.4188   -0.0724    1.1463    1.5481   -1.1005    0.2486    0.2108   -0.6476    0.2342
    0.4928   -1.1089    1.3174   -0.0159    0.1640   -1.8452   -0.2444    0.2382    0.4159   -1.0352   -0.1922   -0.2572    0.2730
   -0.1881   -0.4629    0.5444    0.1811   -0.2755   -1.0071   -0.0371    0.9353    0.0249   -0.7149    0.6569    1.3472    0.8498
   -0.5650    1.4343    1.6925    0.6614    0.8298    0.4463   -0.0292    0.0611    0.1525    0.6717   -1.9798   -1.3753   -1.4448
   -0.8131    1.1747    0.9539   -0.0602   -1.3154    0.5710   -1.3058    1.2787    1.4570   -0.9123   -1.0669    1.0100   -0.4752
   -0.3102   -1.1759    0.1568   -0.2604   -0.4042   -0.6719    0.2898    2.9933    0.6541    0.6591   -0.3286   -1.5196    0.8313
   -0.2545    0.3364   -1.0118    0.8460    0.8119   -0.2874    0.3222   -1.9115    1.1700   -0.9626    0.9201    2.1497   -0.4317
    0.8291    0.4106    1.3754   -0.1689    0.3806    0.4695   -0.6680    3.0876   -0.6761   -0.9902   -0.5475   -0.9032   -0.0428
   -1.8959    2.3886   -1.1967   -0.6461   -1.0763   -0.2231    0.3428   -1.1600   -0.0316   -1.1602   -0.4950    1.0815    0.8906
   -0.1548   -0.6660    0.1265    0.7222    0.8261   -0.4984   -0.2974   -0.0020   -0.4614   -0.0332    0.1965   -0.4464   -0.9535
    0.3757    0.8101    1.0679    0.4015    0.4796   -0.2457    0.5457    1.5153   -0.3745    1.5960    1.5651    0.5996   -1.2532
   -1.0513    0.1569    0.1494   -0.5867   -1.9264    0.0396   -0.2479    0.6159   -1.0877    0.4553    1.2083    0.2206    3.3561
    0.1181   -0.2309   -0.3543    1.0262   -0.6904   -0.1576    0.8765    0.5159   -0.0843   -0.1114    0.8817   -0.2681    0.3237

根据net.LW{2,1}可得下式,记为

>> W2=net.LW{2,1}
W2 =
   -0.2171   -0.0488   -0.4684   -0.7564    0.2761    0.4006    0.0158    0.1042    0.2304    0.3622   -0.2882    0.1682   -0.7007    0.0786    0.5335

根据net.b{1}可得下式,记为

>> b1=net.b{1}
b1 =
    2.1510
    1.9738
    1.5234
   -1.9311
    0.5286
    2.5662
   -0.4979
    0.1441
    0.1731
   -0.2444
   -1.6653
    1.2786
   -1.7759
   -2.2227
   -2.0938

根据net.b{2}可得下式,记为

>> b2=net.b{2}
b2 =
   -0.7651

根据net.inputs{1}.range可得下式,记为

>> in_xref = net.inputs{1}.range
in_xref =
   22.0000   81.0000
  118.5000  363.1500
   29.5000   77.7500
   31.1000   51.2000
   79.3000  136.2000
   69.4000  148.1000
   85.0000  147.7000
   47.2000   87.3000
   33.0000   49.1000
   19.1000   33.9000
   24.8000   45.0000
   21.0000   34.9000
   15.8000   21.4000
>> in_xref_min = in_xref(:,1)
in_xref_min =
   22.0000
  118.5000
   29.5000
   31.1000
   79.3000
   69.4000
   85.0000
   47.2000
   33.0000
   19.1000
   24.8000
   21.0000
   15.8000
>> in_xref_max = in_xref(:,2)
in_xref_max =
   81.0000
  363.1500
   77.7500
   51.2000
  136.2000
  148.1000
  147.7000
   87.3000
   49.1000
   33.9000
   45.0000
   34.9000
   21.4000

根据net.inputs{1}.processedRange可得下式,记为

>> in_yref = net.inputs{1}.processedRange
in_yref =
   -1.0000    1.0000
   -1.0000    1.0000
   -1.0000    1.0000
   -1.0000    1.0000
   -1.0000    1.0000
   -1.0000    1.0000
   -1.0000    1.0000
   -1.0000    1.0000
   -1.0000    1.0000
   -1.0000    1.0000
   -1.0000    1.0000
   -1.0000    1.0000
   -1.0000    1.0000
>> in_yref_min = in_yref(:,1)
in_yref_min =
    -1
    -1
    -1
    -1
    -1
    -1
    -1
    -1
    -1
    -1
    -1
    -1
    -1
>> in_yref_max = in_yref(:,2)
in_yref_max =
    1.0000
    1.0000
    1.0000
    1.0000
    1.0000
    1.0000
    1.0000
    1.0000
    1.0000
    1.0000
    1.0000
    1.0000
    1.0000

根据net.outputs{2}.range可得下式,记为

>> out_xlim = net.outputs{2}.range
out_xlim =
         0   47.5000
>> out_xlim_min = out_xlim(1)
out_xlim_min =
     0
>> out_xlim_max = out_xlim(2)
out_xlim_max =
   47.5000

根据net.outputs{2}.processedRange可得下式,记为

>> out_ylim = net.outputs{2}.processedRange
out_ylim =
    -1     1
>> out_ylim_min=out_ylim(1)
out_ylim_min =
    -1
>> out_ylim_max=out_ylim(2)
out_ylim_max =
     1

拆分后,一共有如下12个参数:

如何根据这12个参数得到最终的拟合值?

netfit对应的simulink模型

根据fitnet对象包含的方法gensim: Generate Simulink model,可以生成对应的simulink模型。

如下所示

其中:

(1)x1为输入参数,在体脂估计算例中为13×1的矩阵;

(2)Function Fitting Neural Network为拟合神经网络;

(3)y1为输出,在体脂估计算例中为1×1矩阵。

在本层,可得:

Function Fitting Neural Network模型展开

展开如下:

包含两排,

第一排为输入到中间变量,可以得到:

继续展开ProcessInput1,如下所示,得到:

Layer1展开如下所示,得到:

其中tansig展开如下所示,得到:

综上,

第二排为中间变量到输出,可以得到:

展开Layer2如下所示,可以得到:

其中展开purelin得到:

展开 ProcessOutput1得到:

其中展开mapminmax_reverse得到(下图中x,y为局部标号):

最终公式

最终计算公式为:

p=(x1-in_xref_min).*(in_yref_max-in_yref_min)./(in_xref_max-in_xref_min)+in_yref_min;
a1=2./(1+exp(-2*(W1*p+b1)))-1;
L2_out = W2*a1+b2;
y1=(L2_out-out_ylim_min)*(out_xlim_max-out_xlim_min)/(out_ylim_max-out_ylim_min)+out_xlim_min

带入x1=zeros(13,1) ,得到:

>> x1=zeros(13,1);
p=(x1-in_xref_min).*(in_yref_max-in_yref_min)./(in_xref_max-in_xref_min)+in_yref_min;
a1=2./(1+exp(-2*(W1*p+b1)))-1;
L2_out = W2*a1+b2;
y1=(L2_out-out_ylim_min)*(out_xlim_max-out_xlim_min)/(out_ylim_max-out_ylim_min)+out_xlim_min
y1 =
 -21.854734309717628

直接采用拟合神经网络训练结果网络net进行计算,

y1=net(x1)

得到的结果为:

>> y1=net(zeros(13,1))
y1 =
 -21.854734309717625

两者在浮点计算意义下结果完全一致,表明了分析过程的正确性。

【MATLAB深度学习工具箱】学习笔记--体脂估计算例再分析:拟合神经网络fitnet里面的函数】相关推荐

  1. 【MATLAB深度学习工具箱】学习笔记--体脂估计算例再分析:拟合神经网络fitnet里面的数据结构】

    原文链接如下 [MATLAB深度学习工具箱]学习笔记--体脂估计Body Fat Estimation_bear_miao的博客-CSDN博客介绍本示例展示一个函数拟合神经网络如何根据解剖学测量结果估 ...

  2. s matlab toolbox,Matlab Robotic Toolbox工具箱学习笔记(一 )

    Matlab Robotic Toolbox工具箱学习笔记(一) 软件:matlab2013a 工具箱:Matlab Robotic Toolbox v9.8 Matlab Robotic Toolb ...

  3. 非静压模型NHWAVE学习(8)——波浪破碎模拟算例学习(Breaking solitary wave run-up)

    NHWAVE波浪破碎模拟算例学习(Breaking solitary wave run-up) 算例简介 地形与网格 运行参数配置 模型的编译运行 模拟结果处理 本blog介绍了NHWAVE模型自带算 ...

  4. 非静压模型NHWAVE学习(7)——波浪变形模拟算例学习(Wave transformation over an elliptical shoal)

    波浪变形模拟算例学习(Wave transformation over an elliptical shoal) 算例简介 地形与网格 运行参数配置 模型的编译运行 模拟结果处理 本blog介绍了NH ...

  5. 非静压模型NHWAVE学习(11)——孤立波爬坡测试算例(Solitary Wave on a Simple Beach)

    NHWAVE孤立波爬坡测试算例(Solitary Wave on a Simple Beach) 测试算例简介 实验设置 与解析解对比的模拟(Analytical Solution) 最大爬升高度的模 ...

  6. 吴恩达《深度学习专项》笔记+代码实战(二):简单的神经网络——逻辑回归

    这堂课要学习的是逻辑回归--一种求解二分类任务的算法.同时,这堂课会补充实现逻辑回归必备的数学知识.编程知识.学完这堂课后,同学们应该能够用Python实现一个简单的小猫辨别器. 前排提示:本文篇幅较 ...

  7. 使用Matlab和Minepy工具箱做变量的互信息MIC (maximal information coefficient ) 分析

    环境: Windows, MatlabR2018 Minepy是一个可以计算互信息的库,matlab中使用需要安装该库 Minepy的说明及安装步骤详见官方文档: https://minepy.rea ...

  8. 【matlab】强化/深度学习工具箱例程调用汇总及编程实例

    前言 前段时间帮导师申请项目时涉及到了智能化,因为行文过于天马行空导师要求将大致思路仿真出来试试,于是就又找到了强大的MATLAB,在网上一顿搜索后发现最新的强化学习以及深度学习的工具箱只有2019年 ...

  9. matlab强化学习DDPG算法改编/菜鸟理解2——航天器三轴姿态稳定器学习算例

    目录 写在前面 matlab强化学习库简介 航天器三轴姿态稳定器介绍 算法流程 代码/simulink 结果展示与分析 一些心得 写在最后 写在前面 %写在前面: 本人大四狗一名,不是计算机专业,所以 ...

最新文章

  1. 关于素数常用结论--威尔逊定理、欧拉定理、费马小定理、米勒罗宾算法
  2. 如何使用subversion管理iOS源代码
  3. MyEclipse — Maven+Spring+Struts+Hibernate 整合 [学习笔记-1]
  4. vue插槽的使用(slot)
  5. 如何通过提问成为更好的开发人员
  6. 首帧秒开+智能鉴黄+直播答题,阿里云直播系统背后技术大起底
  7. 计算机视觉论文-2021-06-22
  8. java string 练习_JAVA基础练习之String
  9. opencms mysql_OpenCms for MySql安装图解
  10. 算法——动态规划算法求解字符串的编辑距离
  11. 朴素的UNIX之-进程/线程模型
  12. 启明星辰天玥网络安全审计系统手册
  13. 开源字体 思源黑体 思源宋体 2.001 ttf格式
  14. 基于DMD实现透过多模光纤(MMF)的聚焦
  15. Ubuntu软件仓库管理
  16. 教育系统APP(四)
  17. 苹果维修服务器gsx查询,手机苹果官网怎么查序列号(苹果gsx免费查询公众号)...
  18. VMware 将虚拟磁盘多个文件合并为单个文件
  19. 如何在腾讯地图绘制自己的坐标
  20. 每日C语言代码(The sixth day)——选择排序法

热门文章

  1. BGA封装的优缺点解析
  2. 最牛逼的java代码_分享史上java最牛逼,最简短的代码
  3. 简析JavaScript 事件绑定、事件冒泡、事件捕获和事件执行顺序
  4. Java 时间处理 ZoneId
  5. Chip-seq数据寻找Indel
  6. 时尚漂亮的充电头,苹果安卓都能用,Anker安芯充20W上手
  7. SEO优化怎么做,怎么做SEO优化
  8. 从IT思维到AI思维系列:2.人工智能概念和应用场景
  9. 马斯克在 Clubhouse 上「开房」,讲创业、公司进展,还当了回记者
  10. 5G系统——5G-GUTI、5G-TMSI、5G-S-TMSI