This file is indexed.

/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')