Feedforwardnet函数的认识

匿名 (未验证) 提交于 2019-12-03 00:19:01
1、feedforwardnet(前馈神经网络)

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

2、函数表达式

'trainlm'

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

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 =


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的增大而增大。




标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!