function [f, df] = ECG(VV,Dim,XX,target); l1 = Dim(1); l2 = Dim(2); l4= Dim(3); l5= Dim(4); l10= Dim(5); N = size(XX,1); % Do decomversion. w1 = reshape(VV(1:(l1+1)*l2),l1+1,l2); xxx = (l1+1)*l2; w2 = reshape(VV(xxx+1:xxx+(l2+1)*l4),l2+1,l4); xxx = xxx+(l2+1)*l4; w4 = reshape(VV(xxx+1:xxx+(l4+1)*l5),l4+1,l5); xxx = xxx+(l4+1)*l5; w_class = reshape(VV(xxx+1:xxx+(l5+1)*l10),l5+1,l10); XX = [XX ones(N,1)]; w1probs = 1./(1 + exp(-XX*w1)); w1probs = [w1probs ones(N,1)]; w2probs = 1./(1 + exp(-w1probs*w2)); w2probs = [w2probs ones(N,1)]; w4probs = 1./(1 + exp(-w2probs*w4)); w4probs = [w4probs ones(N,1)]; targetout = exp(w4probs*w_class); targetout = targetout./repmat(sum(targetout,2),1,10); f = -1/N*sum(sum( target(:,1:end).*log(targetout))) ; IO = 1/N*(targetout-target(:,1:end)); Ix_class=IO; dw_class = w4probs'*Ix_class; Ix4 = (Ix_class*w_class').*w4probs.*(1-w4probs); Ix4 = Ix4(:,1:end-1); dw4 = w2probs'*Ix4; Ix2 = (Ix4*w4').*w2probs.*(1-w2probs); Ix2 = Ix2(:,1:end-1); dw2 = w1probs'*Ix2; Ix1 = (Ix2*w2').*w1probs.*(1-w1probs); Ix1 = Ix1(:,1:end-1); dw1 = XX'*Ix1; df = [dw1(:)' dw2(:)' dw4(:)' dw_class(:)']';