wolffd@0: function L = lowest_fenergy(V,W,visB,hidB,Classes) wolffd@0: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: % Return the labels L(Classes) to the lowest energy softmax unit % wolffd@0: % visP: hidden states % wolffd@0: % visN: reconstructed data (with softmax) % wolffd@0: % WW = [W visB hidB] % wolffd@0: % F(v) = -\sum_i v_ia_i - \sum_jlog(1+e^(x_j)) % wolffd@0: % -*-sontran2012-*- % wolffd@0: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wolffd@0: lNum = size(Classes,2); wolffd@0: sNum = size(V,1); wolffd@0: F = zeros(sNum,lNum); wolffd@0: out = zeros(sNum,lNum); wolffd@0: for i=1:lNum wolffd@0: F(:,i) = 1; wolffd@0: X = [V F]*W + repmat(hidB,sNum,1); wolffd@0: out(:,i) = sum(repmat(visB,sNum,1).*[V F],2) + sum(log(1+exp(X)),2); wolffd@0: F(:,i) = 0; wolffd@0: end wolffd@0: L = softmax2discrete(out,Classes); wolffd@0: end wolffd@0: