⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 seqlnok.m

📁 上传RBF源程序
💻 M
字号:
% 验证串行学习方式下神经网络函数能否收敛到目标函数:目标函数和神经网络均使用一个隐节点

% 目标函数为中心为原点的Gaussian函数,RBF网只有数据中心可调,其输出权值和偏移固定为1
% 性能指标函数取目标函数和神经网络函数之差的平方和
% 用三个训练样本,增量式学习,每个样本训练次数为MaxEpoch。此三个训练样本对应的目标函数只有一个局部最小点(原点)

% 结果:算法使数据中心离原点还有一定距离,甚至可能不收敛

clear,clc;
p = -4:.1:4;
[X,Y] = meshgrid(p);
Z = exp(-X.^2 - Y.^2);
mesh(X,Y,Z);
plot3(X,Y,Z);
title('Radial Basis Transfer Function');
xlabel('Input x1');
ylabel('Input x2');
zlabel('Output z');

% Define inputs and associated targets.
hold on
TrainDataIn = [0.5 0.4 -0.3;... 
               0.3 -0.6 0.5];
TrainDataOut = [.7118 .5945 .7118];
plot3(TrainDataIn(1,:),TrainDataIn(2,:),TrainDataOut,'.','markersize',20);
pause(3);grid;figure;

[InDim,TrainDataNum] = size(TrainDataIn);
UnitCenter = [0.9; 0.8];

lr = 0.3;							        % 隐节点数据中心梯度调节学习系数
MaxEpoch = 100;	           			        % 隐节点数据中心调节最大学习次数
ErrVect = [];
function 
for index = 1:TrainDataNum
    NewInput = TrainDataIn(:,index);
    NewOutput = TrainDataOut(:,index);
   
    for epoch = 1:MaxEpoch    
        AllDist = dist(UnitCenter',NewInput);
        NetOut = radbas(AllDist);
        Error = NewOutput-NetOut;

        CentGrad = (Error*NetOut)*(NewInput-UnitCenter);
        UnitCenter = UnitCenter + lr*CentGrad;
        
        ZZ = exp(-(X-UnitCenter(1,1)).^2 - (Y-UnitCenter(2,1)).^2);
        GenError = sqrt(sumsqr(Z-ZZ)/(81*81));
        ErrVect = [ErrVect GenError];
        UnitCenter';
    end
end 

epoch
UnitCenter
hold off
plot(1:TrainDataNum*MaxEpoch,ErrVect,'k-');

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -