Feedforwardnet函数的认识

1、feedforwardnet(前馈神经网络)

     feedforward网络可以用作输入和输出的映射,若给予足够的隐藏神经元,两(或更多)层前馈网络可以实现任何有限的输入输出功能,只含有一个隐含层的的神经网络可以拟合任意有限的输入输出映射问题。

2、函数表达式

    feedforwardnet(hiddenSizes,trainFcn),返回具有N + 1层的前馈神经网络对象。

    hiddenSizes:隐藏层神经元个数(一个行向量),默认值10 

    trainFcn:用于训练网络性能所采用的函数,默认'trainlm'

     训练函数:

     trainlm--- 中型网络,,内存需求最大,收敛速度最快

     trainbfg---BFGS算法(拟牛顿反向传播算法)训练函数;

     traincgb---Powell-Beale共轭梯度反向传播算法训练函数;

     traincgp---Polak-Ribiere变梯度反向传播算法训练函数;

    traingd---梯度下降反向传播算法训练函数;

     traingda---自适应调整学习率的梯度下降反向传播算法训练函数;

     traingdm---附加动量因子的梯度下降反向传播算法训练函数;

     traingdx---自适应调整学习率并附加动量因子的梯度下降反向传播算法训练函数;

     trainrp---RPROP(弹性BP算法)反向传播算法训练函数;、

     trainscg---SCG(scaled conjugate gradient)反向传播算法训练函数

     trainb---以权值/阈值的学习规则采用批处理的方式进行训练的函数

     trainc---以学习函数依次对输入样本进行训练的函数;

     trainr---以学习函数随机对输入样本进行训练的函数.

3、matlab自带例子

[x,t] = simplefit_dataset;% MATLAB自带数据
net = feedforwardnet;% 创建前向网络
view(net)
net = train(net,x,t); % 训练,确定输入输出向量的维度
view(net) % 查看网络的可视化图
y = net(x);    % 计算预测值
perf = perform(net,y,t)	% 计算误差性能

结果:

perf =

   2.0935e-04


4、拟合sin(k*x)函数

目的:比较不同隐含层神经元个数的拟合效果

figure
i = 1;
x = -2:.1:2;
hiddenSizes = [1; 5; 10; 30; 50; 80]; %隐层个数,分别取1、5、10、30、50和80
perf = zeros(size(hiddenSizes, 1),5); %保存拟合的误差值
for hs = 1:size(hiddenSizes, 1) %size(A,1)取矩阵的行数
    net = feedforwardnet( hiddenSizes(hs) ); %bp神经网络
    for k = 1:5
        t = cos(k * x);
        net = train(net, x, t);
        y = net(x);
        perf(hs, k) = perform(net, y, t);
        fprintf("hs = %d  k = %d : \n\tperf=%e\n\n", hs, k, perf(hs, k))
        subplot(size(hiddenSizes, 1),5,i); 
        i = i + 1;
        plot(x, t, 'r.',x, y,'g-');
        ax = gca; ax.YLim = [-1 1]; ax.XTick = []; ax.YTick = [];
    end
end

5、拟合结果


由结果可见:

①k一定,隐含层神经元个数越大,拟合效果越好,超过一定的程度,影响效果不显著甚至出现过拟合;

②k比较大时,隐含层神经元个数如果太小会导致拟合不足;

③k比较小时,隐含层神经元个数如果太大会导致拟合过度;

④拟合效果一致时,所需的隐含层神经元个数随着k的增大而增大。



    

 

 
   
  • 23
    点赞
  • 134
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值