wolffd@0
|
1 function [y, extra, invhess] = netevfwd(w, net, x, t, x_test, invhess)
|
wolffd@0
|
2 %NETEVFWD Generic forward propagation with evidence for network
|
wolffd@0
|
3 %
|
wolffd@0
|
4 % Description
|
wolffd@0
|
5 % [Y, EXTRA] = NETEVFWD(W, NET, X, T, X_TEST) takes a network data
|
wolffd@0
|
6 % structure NET together with the input X and target T training data
|
wolffd@0
|
7 % and input test data X_TEST. It returns the normal forward propagation
|
wolffd@0
|
8 % through the network Y together with a matrix EXTRA which consists of
|
wolffd@0
|
9 % error bars (variance) for a regression problem or moderated outputs
|
wolffd@0
|
10 % for a classification problem.
|
wolffd@0
|
11 %
|
wolffd@0
|
12 % The optional argument (and return value) INVHESS is the inverse of
|
wolffd@0
|
13 % the network Hessian computed on the training data inputs and targets.
|
wolffd@0
|
14 % Passing it in avoids recomputing it, which can be a significant
|
wolffd@0
|
15 % saving for large training sets.
|
wolffd@0
|
16 %
|
wolffd@0
|
17 % See also
|
wolffd@0
|
18 % MLPEVFWD, RBFEVFWD, GLMEVFWD, FEVBAYES
|
wolffd@0
|
19 %
|
wolffd@0
|
20
|
wolffd@0
|
21 % Copyright (c) Ian T Nabney (1996-2001)
|
wolffd@0
|
22
|
wolffd@0
|
23 func = [net.type, 'evfwd'];
|
wolffd@0
|
24 net = netunpak(net, w);
|
wolffd@0
|
25 if nargin == 5
|
wolffd@0
|
26 [y, extra, invhess] = feval(func, net, x, t, x_test);
|
wolffd@0
|
27 else
|
wolffd@0
|
28 [y, extra, invhess] = feval(func, net, x, t, x_test, invhess);
|
wolffd@0
|
29 end
|