当前位置:   article > 正文

Matlab神经网络十讲(8): 归一化、权重读取、(非)线性网络设计_matlab bp神经网络的sim函数有归一化吗

matlab bp神经网络的sim函数有归一化吗

1.关于归一化问题

大家都知道train里面对数据先进行了归一化再来计算的。训练好神经网络后,用sim函数可以得到准确的值,但是为什么我们自己写算法来计算就得不到计算结果呢?因为归一化。    

  1. clear all
  2. [x,t] = simplefit_dataset;
  3. net = feedforwardnet(10)
  4. net = train(net,x,t);
  5. %view(net)
  6. %y = net(x)
  7. %perf = perform(net,y,t)
  8. test_num = 5;
  9. xT = x(:,test_num); %xT为验证数据
  10. yt = t(test_num)
  11. yo = sim(net,xT)

单独设计归一化、反归一化代码:

  1. [x1 psx] = mapminmax(x); %注意 这里的x,t 是训练数据
  2. [t1 pst] = mapminmax(t);
  3. xT1 = mapminmax('apply',xT,psx);
  4. hi = net.IW{1} * xT1;
  5. hi = hi + net.b{1};
  6. ho = tansig(hi);
  7. yi = net.LW{2,1} * ho;
  8. yi = yi + net.b{2};
  9. yo2 = yi
  10. yo2_1 = mapminmax('reverse',yo2,pst) %输出结果与yt yo 一致!
MATLAB中归一化原理:

mapminmax按行逐行地对数据进行标准化处理,将每一行数据分别标准化到区间[ymin, ymax]内,其计算公式是:y = (ymax-ymin)*(x-xmin)/(xmax-xmin) + ymin。如果某行的数据全部相同,此时xmax=xmin,除数为0,则Matlab内部将此变换变为y = ymin。

2.关于读取网络中的权重和偏置

net.IW{1,1}(2,1) : net.IW{1,1}是指输入层和第一隐含层之间的网络权重,(2,1)读取该层间的每条路径的权重。

net.LW{2,1}(2,1) : net.LW{2,1}是指第二隐含层与第一隐含层之间的网络权重,(2,1)读取该层间的每条路径的权重。

net.b(n) : 读取第n个隐含层的偏置。

3.关于线性网络和非线性网络


神经网络的线性非线性主要是由传输函数组成。

MATLAB的神经网络工具箱中包括两个非线性函数logsig和tansig,以及一个线性函数purelin。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/blog/article/detail/89952
推荐阅读
相关标签
  

闽ICP备14008679号