wolffd@0: function Xi = lossHingeMKLFull(W, Psi, M, gradient) wolffd@0: % wolffd@0: % Xi = lossHingeMKLFull(W, Psi, M, gradient) wolffd@0: % wolffd@0: % W: d*d*m metric wolffd@0: % Psi: d*d*m feature matrix wolffd@0: % M: the desired margin wolffd@0: % gradient: if 0, returns the loss value wolffd@0: % if 1, returns the gradient of the loss WRT W wolffd@0: wolffd@0: m = size(W, 3); wolffd@0: wolffd@0: Xi = M; wolffd@0: for i = 1:m wolffd@0: Xi = Xi - sum(sum(W(:,:,i) .* Psi(:,:,i))); wolffd@0: end wolffd@0: Xi = max(0, Xi); wolffd@0: wolffd@0: if gradient & Xi > 0 wolffd@0: Xi = -Psi; wolffd@0: end wolffd@0: end