• 大小: 3KB
    文件类型: .m
    金币: 2
    下载: 1 次
    发布日期: 2021-05-25
  • 语言: Matlab
  • 标签: RBF;MATLAB  

资源简介

利用RBF网络(隐含层神经单元个数和学习率等参数可在内部修改,不作为输入参数)学习和训练,并对输入的测试样本做出响应。 输入和输出维数可以多维。 实际运行,逼近y=sin(t)函数效果不错。

资源截图

代码片段和文件信息

% RBF网络逼近,多维输入情况
% 作者:nuaazdh
% 时间:2012年4月11日 20:11:25
function [test_out]=RBF_NN_MIC(train_itrain_otest_i)
% train_i:训练样本输入,行数表示其维数,列数表示样本个数
% train_o:训练样本输出
% test_i:测试样本输入
% test_o:测试样本输出
%% 参数设定和初始化
size_tr=size(train_i2); %训练样本个数
size_te=size(test_i2);  %测试样本个数
%train_o=cos(train_i);%因变量y
in_num=size(train_i1);%输入层神经单元个数
hid_num=7;         %隐含层神经单元个数
w=rand(1hid_num);%隐含层-输出层的权值
b=ones(1hid_num);%节点基宽
c=4.0*rand(in_numhid_num);%基函数中心
h=zeros(1hid_num);%RBF网络的径向基向量
eta_w=0.080;%学习率η
eta_b=0.010;
eta_c=0.010;
alpha=0.1;%动量因子α
%beta=0.1;%变步长调整系数
maxgen=20000;%最大迭代次数
error_goal=1e-4;%误差精度要求
mse=zeros(1maxgen);%均方误差
wk_1=w;wk_2=w;%前1 2 时刻的权值
bk_1=b;bk_2=b;%前1 2 时刻的基宽值
ck_1=c;ck_2=c;%前1 2时刻的中心值
delta_c=zeros(in_numhid_num);
%[~ce]=kmeans(train_ihid_num);
%c=ce‘;
W=cell(maxgen1);
B=cell(maxgen1);
C=cell(maxgen1);
%% 开始训练网络
gen=0;
for i=1:maxgen
    gen=gen+1;%当前迭代次数
    %% 训练样本
    for j=1:size_tr
        for k=1:hid_num
            h(k)=exp(-norm(train_i(:j)-c(:k))^2/(2*b(k)^2));
        end
        ye=w*h‘;
        %修正权值
        e=train_o(j)-ye;%当前输出误差        
        for k=1:hid_num                
            w(k)=wk_1(k)+eta_w*e*h(k)+alpha

评论

共有 条评论

相关资源