📄 etestboot_snn.m
字号:
function Etestval = etestboot_snn(nets, datasets)%ETESTBOOT_SNN Compute a bootstrap estimate for E_test.%% Syntax%% Etest = etestboot_snn(nets, datasets)%% Description%% nets - [1 x M]% array of networks trained with costFcn = wcf_snn, % with the same costFcn parameters (fn and gn) and data.% datasets - [1 x M] array of dataset_structs%% Etest - [1 x M]% generalization error bootstrap estimate.%% Algorithm%% See: T. Heskes; Balancing between bagging and bumping; % Advances in Neural Information Processsing Systems 9.%% See also%% TRAIN_SNN, WCF_SNN, BALANCE_SNN%%data = datasets(1).data;M = size(nets,2);MU = size(data.P,2);N = size(nets(1).biases{nets(1).numLayers},1);g = getg_snn(nets(1), data);fn = nets(1).costFcn.fn;i0 = zeros(N, MU);i0(find(~isnan(g))) = 1;Eimum = zeros(N, MU, M);q = zeros(N, MU, M);for m = 1:M ym = simff_snn(nets(1,m), data); if isstr(fn) ii = find(~isnan(g)); Eimum(ii+(m-1)*N*MU) = feval(fn, ym(ii), data.T(ii)); else for i = 1:size(ym,1) ii = find(~isnan(g(i,:))); Eimum(i, ii, m) = feval(fn{i,1}, ym(i, ii), data.T(i, ii)); end end nu = datasets(m).val_ind; q(:, nu, m) = i0(:, nu);endn = sum(q,3); Eimumean = zeros(N, MU);ii = find(n);tmp = sum(q.*Eimum, 3); Eimumean(ii) = tmp(ii)./n(ii);for m = 1:M mu = datasets(m).val_ind; nu = mu(randboot_snn(size(mu,2))); gval = g(:,nu); Eval = Eimum(:,nu,m); Emeanval = Eimumean(:,nu); ii = find(i0(:,nu)); relE(m) = (col(gval(ii))'*col(Eval(ii))) / ... (col(gval(ii))'*col(Emeanval(ii)));endii = find(~isnan(g));ii = ii(:);Emean = col(g(ii))'*col(Eimumean(ii))/sum(g(ii)); Etestval = relE*Emean; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%function A = col(A)A = reshape(A, prod(size(A)), 1);%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -