📄 average_outputs_snn.m
字号:
function y_av = average_outputs_snn(ym, alpha, errf)%AVERAGE_OUTPUTS_SNN Weighted output average.%% Syntax%% y_av = average_outputs_snn(ym, alpha, errf) %% Description%% AVERAGE_OUTPUTS_SNN takes% ym - [NL x MU x M] matrix of networks outputs. % alpha - [1 x M] matrix of weighting factors.% errf - string OR [N x 1] cell array of strings of errorfunction(s).% and returns% y_av - [NL x MU] matrix of weighted outputs.%% (NL = #outputs; MU = #patterns; M = #networks in ensemble)%% Supported output errorfunctions are:% - SE_SNN squared error;% - RELERR_SNN relative error;% - CROSSENTROPY_SNN cross entropy;% - CROSSLOGISTIC_SNN cross logisitc;% - LOGLIKELIHOOD_SNN log likelihood;%% See also%% BALANCE_SNN, SIMFF_AVR_SNN%if (nargin ~= 3) error('Must have 3 input arguments.');end[N, MU, M] = size(ym);delta = 1e-6;alpha = alpha/(sum(alpha,1));if isstr(errf) switch (errf) case {'se_snn'}, y_av = reshape(reshape(ym, N*MU, M) * alpha, N, MU); case {'qe_snn'}, y_av = reshape(reshape(ym, N*MU, M) * alpha, N, MU); case {'relerr_snn'}, y_av = reshape(... ((reshape(ym, N*MU, M).^2) * alpha)./ ... (reshape(ym, N*MU, M) * alpha), ... N, MU); case {'crossentropy_snn'}, y_av = reshape(... tanh(atanh(max(min(reshape(ym, N*MU, M), 1-delta),... -1+delta))... * alpha), ... N, MU); case {'crosslogistic_snn'}, ym = reshape(max(min(ym, 1-delta), delta), N*MU, M); y_av = reshape(... 1./(1 + exp(log((1-ym)./ym) * alpha)), ... N, MU); case {'loglikelihood_snn'}, y_av = reshape(1./((1./reshape(ym, N*MU, M)) * alpha), N, MU); otherwise, error(sprintf('No support for output error function %s', errf)); endelseif iscell(errf) y_av = zeros(N, MU); for i = 1:N switch (errf{i,1}) case {'se_snn'}, y_av(i, :) = (reshape(ym(i,:,:), MU, M) * alpha)'; case {'qe_snn'}, y_av(i, :) = (reshape(ym(i,:,:), MU, M) * alpha)'; case {'relerr_snn'}, y_av(i, :) = ... ( ((reshape(ym(i,:,:), MU, M).^2) * alpha)./ ... (reshape(ym(i,:,:), MU, M) * alpha) )'; case {'crossentropy_snn'}, y_av(i, :) = ... (tanh(atanh(max(min(reshape(ym(i,:,:), MU, M), 1-delta),... -1+delta))... * alpha))'; case {'crosslogistic_snn'}, tmp = reshape(max(min(ym(i,:,:), 1-delta), delta), MU, M); y_av(i, :) = (1./(1 + exp(log((1-tmp)./tmp) * alpha)))'; case {'loglikelihood_snn'}, y_av(i, :) = (1./((1./reshape(ym(i,:,:), MU, M)) * alpha))'; otherwise, error(sprintf(... 'No support for output errorfunction %s', errf{i,1})); end endelse error('Incorrect format for output errorfunction');end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -