📄 elm_incremental.m
字号:
%~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
%
% ELM_incremental(network,data) - train with incremental learning algorithm
% starting with single neuron and adding one on each step.
%
% Parameters: network - neural network with matrix networks
% data - training data sample
% epsilon - minimal MSE change
% maxNodes - maximal nodes
%
%
% Author: Povilas Daniu餴s, paralax@hacker.lt
% http://ai.hacker.lt - lithuanian site about Artificial Intelligence.
%
% ----------------------------------------------------------------------
function elm = ELM_incremental(e,data,epsilon,maxNodes)
DAT = data;
e.weights(1) = mean(data.target);
data.target = data.target - e.weights(1);
mse0 = +Inf;
stop = 0;
k = 2;
while stop == 0
num = 0;
denum = 0;
for i = 1:length(data.target)
num = num + data.target(i) * tansig(e.left(k).w*data.training(i).mat*e.right(k).w + e.bias(k));
denum = denum + (tansig(e.left(k).w*data.training(i).mat*e.right(k).w + e.bias(k)))^2;
end
e.weights(k) = num/denum;
s_elm = mNN_sim(e,DAT);
mse = sum((DAT.target - s_elm).^2) / length(DAT.target);
fprintf('Regressors %d, mse = %f \n',k,mse);
if (mse > mse0 || abs(mse - mse0) < epsilon || k > maxNodes)
stop = 1;
else
mse0 = mse;
for i=1:length(data.target)
data.target(i) = data.target(i) - e.weights(k) * tansig(e.left(k).w*data.training(i).mat*e.right(k).w + e.bias(k));
end
e = addNode(e);
k = k + 1;
end
end
elm = e;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -