/usr/share/octave/site/m/vlfeat/toolbox/demo/vl_demo_gmm_convergence.m is in octave-vlfeat 0.9.17+dfsg0-6+b1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 | dimension = 128;
numData = 10000;
numClusters = 100;
numIterations = 5;
numIterationsKM = 3;
X = rand(dimension,numData);
numTrials = 2;
lls = zeros(numTrials,2);
for trial = 1:numTrials
% kmeans initialization
startKMEANS = tic;
[initMeans, assignments] = vl_kmeans(X, numClusters, ...
'verbose', ...
'multithreading', 'parallel', ...
'algorithm','ann', ...
'MaxNumIterations',numIterationsKM, ...
'distance','l2', ...
'NumTrees',3, ...
'MaxNumComparisons', 5);
elapsedKMEANS = toc(startKMEANS);
fprintf('\n ---------- \n KMeans time - %f \n ---------- \n\n',elapsedKMEANS);
% compute initial gaussian parameters
initWeights = zeros(1,numClusters);
initSigmas = zeros(dimension,numClusters);
for i=1:numClusters
Xk = X(:,assignments==i);
initWeights(i) = size(Xk,2) / numClusters;
if size(Xk,1) == 0 || size(Xk,2) == 0
initSigmas(:,i) = diag(cov(X'));
else
initSigmas(:,i) = diag(cov(Xk'));
end
end
% gmm with kmeans init
[means,sigmas,weights,ll,posteriors] = vl_gmm(X, numClusters, ...
'initialization','custom', ...
'InitMeans',initMeans, ...
'InitSigmas',initSigmas, ...
'InitWeights',initWeights, ...
'verbose', ...
'multithreading', 'parallel', ...
'MaxNumIterations', numIterations);
elapsedGMM = toc(startKMEANS);
fprintf('\n ---------- \n GMM kmeans init time - %f \n ---------- \n\n',elapsedGMM);
lls(trial,1) = ll;
% gmm with random init
elapsedGMM = tic;
[means,sigmas,weights,ll,posteriors] = vl_gmm(X, numClusters, ...
'initialization','rand', ...
'verbose', ...
'multithreading', 'parallel', ...
'MaxNumIterations', numIterations);
elapsedGMM = toc(elapsedGMM);
fprintf('\n ---------- \n GMM random init time - %f \n ---------- \n\n',elapsedGMM);
lls(trial,2) = ll;
end
lls = sum(lls,1)/numTrials;
inits = {'KMeans','Random'};
disp(lls)
figure
bar(lls);
set(gca,'xticklabel',inits);
xlabel('Initialization type');
ylabel('LogLikelyhood');
title('GMM convergence test')
|