annotate toolboxes/FullBNT-1.0.7/netlab3.3/netunpak.m @ 0:cc4b1211e677 tip

initial commit to HG from Changeset: 646 (e263d8a21543) added further path and more save "camirversion.m"
author Daniel Wolff
date Fri, 19 Aug 2016 13:07:06 +0200
parents
children
rev   line source
Daniel@0 1 function net = netunpak(net, w)
Daniel@0 2 %NETUNPAK Separates weights vector into weight and bias matrices.
Daniel@0 3 %
Daniel@0 4 % Description
Daniel@0 5 % NET = NETUNPAK(NET, W) takes an net network data structure NET and a
Daniel@0 6 % weight vector W, and returns a network data structure identical to
Daniel@0 7 % the input network, except that the componenet weight matrices have
Daniel@0 8 % all been set to the corresponding elements of W. If there is a MASK
Daniel@0 9 % field in the NET data structure, then the weights in W are placed in
Daniel@0 10 % locations corresponding to non-zero entries in the mask (so W should
Daniel@0 11 % have the same length as the number of non-zero entries in the MASK).
Daniel@0 12 %
Daniel@0 13 % See also
Daniel@0 14 % NETPAK, NETFWD, NETERR, NETGRAD
Daniel@0 15 %
Daniel@0 16
Daniel@0 17 % Copyright (c) Ian T Nabney (1996-2001)
Daniel@0 18
Daniel@0 19 unpakstr = [net.type, 'unpak'];
Daniel@0 20
Daniel@0 21 % Check if we are being passed a masked set of weights
Daniel@0 22 if (isfield(net, 'mask'))
Daniel@0 23 if length(w) ~= size(find(net.mask), 1)
Daniel@0 24 error('Weight vector length does not match mask length')
Daniel@0 25 end
Daniel@0 26 % Do a full pack of all current network weights
Daniel@0 27 pakstr = [net.type, 'pak'];
Daniel@0 28 fullw = feval(pakstr, net);
Daniel@0 29 % Replace current weights with new ones
Daniel@0 30 fullw(logical(net.mask)) = w;
Daniel@0 31 w = fullw;
Daniel@0 32 end
Daniel@0 33
Daniel@0 34 net = feval(unpakstr, net, w);