Mercurial > hg > camir-aes2014
diff toolboxes/FullBNT-1.0.7/netlab3.3/netunpak.m @ 0:e9a9cd732c1e tip
first hg version after svn
author | wolffd |
---|---|
date | Tue, 10 Feb 2015 15:05:51 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/toolboxes/FullBNT-1.0.7/netlab3.3/netunpak.m Tue Feb 10 15:05:51 2015 +0000 @@ -0,0 +1,34 @@ +function net = netunpak(net, w) +%NETUNPAK Separates weights vector into weight and bias matrices. +% +% Description +% NET = NETUNPAK(NET, W) takes an net network data structure NET and a +% weight vector W, and returns a network data structure identical to +% the input network, except that the componenet weight matrices have +% all been set to the corresponding elements of W. If there is a MASK +% field in the NET data structure, then the weights in W are placed in +% locations corresponding to non-zero entries in the mask (so W should +% have the same length as the number of non-zero entries in the MASK). +% +% See also +% NETPAK, NETFWD, NETERR, NETGRAD +% + +% Copyright (c) Ian T Nabney (1996-2001) + +unpakstr = [net.type, 'unpak']; + +% Check if we are being passed a masked set of weights +if (isfield(net, 'mask')) + if length(w) ~= size(find(net.mask), 1) + error('Weight vector length does not match mask length') + end + % Do a full pack of all current network weights + pakstr = [net.type, 'pak']; + fullw = feval(pakstr, net); + % Replace current weights with new ones + fullw(logical(net.mask)) = w; + w = fullw; +end + +net = feval(unpakstr, net, w); \ No newline at end of file