Documentation>C API
Functions
gmm.c File Reference

Gaussian Mixture Models - Implementation. More...

`#include "gmm.h"`
`#include <stdio.h>`
`#include <stdlib.h>`
`#include <string.h>`
`#include "mathop_avx.h"`
`#include "shuffle-def.h"`

## Functions

VlGMM * | vl_gmm_new (vl_type dataType, vl_size dimension, vl_size numComponents)
| Create a new GMM object.
void | vl_gmm_reset (VlGMM *self)
| Reset state.
void | vl_gmm_delete (VlGMM *self)
| Deletes a GMM object.
vl_type | vl_gmm_get_data_type (VlGMM const *self)
| Get data type.
vl_size | vl_gmm_get_num_clusters (VlGMM const *self)
| Get the number of clusters.
vl_size | vl_gmm_get_num_data (VlGMM const *self)
| Get the number of data points.
double | vl_gmm_get_loglikelihood (VlGMM const *self)
| Get the log likelihood of the current mixture.
int | vl_gmm_get_verbosity (VlGMM const *self)
| Get verbosity level.
void | vl_gmm_set_verbosity (VlGMM *self, int verbosity)
| Set verbosity level.
void const * | vl_gmm_get_means (VlGMM const *self)
| Get means.
void const * | vl_gmm_get_covariances (VlGMM const *self)
| Get covariances.
void const * | vl_gmm_get_priors (VlGMM const *self)
| Get priors.
void const * | vl_gmm_get_posteriors (VlGMM const *self)
| Get posteriors.
vl_size | vl_gmm_get_max_num_iterations (VlGMM const *self)
| Get maximum number of iterations.
void | vl_gmm_set_max_num_iterations (VlGMM *self, vl_size maxNumIterations)
| Set maximum number of iterations.
void | vl_gmm_set_num_repetitions (VlGMM *self, vl_size numRepetitions)
| Set maximum number of repetitions.
vl_size | vl_gmm_get_dimension (VlGMM const *self)
| Get data dimension.
VlGMMInitialization | vl_gmm_get_initialization (VlGMM const *self)
| Get initialization algorithm.
void | vl_gmm_set_initialization (VlGMM *self, VlGMMInitialization init)
| Set initialization algorithm.
VlKMeans * | vl_gmm_get_kmeans_init_object (VlGMM const *self)
| Get KMeans initialization object.
void | vl_gmm_set_kmeans_init_object (VlGMM *self, VlKMeans *kmeans)
| Set KMeans initialization object.
double const * | vl_gmm_get_covariance_lower_bounds (VlGMM const *self)
| Get the lower bound on the diagonal covariance values.
void | vl_gmm_set_covariance_lower_bounds (VlGMM *self, double const *bounds)
| Set the lower bounds on diagonal covariance values.
void | vl_gmm_set_covariance_lower_bound (VlGMM *self, double bound)
| Set the lower bounds on diagonal covariance values.
VlGMM * | vl_gmm_new_copy (VlGMM const *self)
| Create a new GMM object by copy.
void | vl_gmm_init_with_rand_data (VlGMM *self, void const *data, vl_size numData)
| Initialize mixture before EM takes place using random initialization.
void | vl_gmm_init_with_kmeans (VlGMM *self, void const *data, vl_size numData, VlKMeans *kmeansInit)
| Initializes the GMM using KMeans.
double | vl_gmm_cluster (VlGMM *self, void const *data, vl_size numData)
| Run GMM clustering - includes initialization and EM.
double | vl_gmm_em (VlGMM *self, void const *data, vl_size numData)
| Invoke the EM algorithm.
void | vl_gmm_set_means (VlGMM *self, void const *means)
| Explicitly set the initial means for EM.
void | vl_gmm_set_covariances (VlGMM *self, void const *covariances)
| Explicitly set the initial sigma diagonals for EM.
void | vl_gmm_set_priors (VlGMM *self, void const *priors)
| Explicitly set the initial priors of the gaussians.
Get parameters
vl_size | vl_gmm_get_num_repetitions (VlGMM const *self)
| Get maximum number of repetitions.

## Detailed Description

Author
  David Novotny
  Andrea Vedaldi

## Function Documentation

## ◆ vl_gmm_cluster()

double vl_gmm_cluster | ( | VlGMM * | self,
|  | void const * | data,
|  | vl_size | numData )

Parameters

  self | GMM object instance.
  data | data points which should be clustered.
  numData | number of data points.

## ◆ vl_gmm_delete()

void vl_gmm_delete | ( | VlGMM * | self | ) |

Parameters

  self | GMM object instance.

The function deletes the GMM object instance created by vl_gmm_new.

## ◆ vl_gmm_em()

double vl_gmm_em | ( | VlGMM * | self,
|  | void const * | data,
|  | vl_size | numData )

Parameters

  self | GMM object instance.
  data | data points which should be clustered.
  numData | number of data points.

## ◆ vl_gmm_get_covariance_lower_bounds()

double const * vl_gmm_get_covariance_lower_bounds | ( | VlGMM const * | self | ) |

Parameters

  self | object

Returns
  lower bound on covariances.

## ◆ vl_gmm_get_covariances()

void const * vl_gmm_get_covariances | ( | VlGMM const * | self | ) |

Parameters

  self | object

Returns
  diagonals of cluster covariance matrices.

## ◆ vl_gmm_get_data_type()

vl_type vl_gmm_get_data_type | ( | VlGMM const * | self | ) |

Parameters

  self | object

Returns
  data type.

## ◆ vl_gmm_get_dimension()

vl_size vl_gmm_get_dimension | ( | VlGMM const * | self | ) |

Parameters

  self | object

Returns
  data dimension.

## ◆ vl_gmm_get_initialization()

VlGMMInitialization vl_gmm_get_initialization | ( | VlGMM const * | self | ) |

Parameters

  self | object

Returns
  initialization algorithm.

## ◆ vl_gmm_get_kmeans_init_object()

VlKMeans * vl_gmm_get_kmeans_init_object | ( | VlGMM const * | self | ) |

Parameters

  self | object

Returns
  kmeans initialization object.

## ◆ vl_gmm_get_loglikelihood()

double vl_gmm_get_loglikelihood | ( | VlGMM const * | self | ) |

Parameters

  self | object

Returns
  loglikelihood.

## ◆ vl_gmm_get_max_num_iterations()

vl_size vl_gmm_get_max_num_iterations | ( | VlGMM const * | self | ) |

Parameters

  self | object

Returns
  maximum number of iterations.

## ◆ vl_gmm_get_means()

void const * vl_gmm_get_means | ( | VlGMM const * | self | ) |

Parameters

  self | object

Returns
  cluster means.

## ◆ vl_gmm_get_num_clusters()

vl_size vl_gmm_get_num_clusters | ( | VlGMM const * | self | ) |

Parameters

  self | object

Returns
  number of clusters.

## ◆ vl_gmm_get_num_data()

vl_size vl_gmm_get_num_data | ( | VlGMM const * | self | ) |

Parameters

  self | object

Returns
  number of data points.

## ◆ vl_gmm_get_num_repetitions()

vl_size vl_gmm_get_num_repetitions | ( | VlGMM const * | self | ) |

Parameters

  self | object

Returns
  current number of repretitions for quantization.

## ◆ vl_gmm_get_posteriors()

void const * vl_gmm_get_posteriors | ( | VlGMM const * | self | ) |

Parameters

  self | object

Returns
  posterior probabilities of cluster memberships.

## ◆ vl_gmm_get_priors()

void const * vl_gmm_get_priors | ( | VlGMM const * | self | ) |

Parameters

  self | object

Returns
  priors of cluster gaussians.

## ◆ vl_gmm_get_verbosity()

int vl_gmm_get_verbosity | ( | VlGMM const * | self | ) |

Parameters

  self | object

Returns
  verbosity level.

## ◆ vl_gmm_init_with_kmeans()

void vl_gmm_init_with_kmeans | ( | VlGMM * | self,
|  | void const * | data,
|  | vl_size | numData,
|  | VlKMeans * | kmeansInit )

Parameters

  self | GMM object instance.
  data | data points which should be clustered.
  numData | number of data points.
  kmeansInit | KMeans object to use.

## ◆ vl_gmm_init_with_rand_data()

void vl_gmm_init_with_rand_data | ( | VlGMM * | self,
|  | void const * | data,
|  | vl_size | numData )

Parameters

  self | GMM object instance.
  data | data points which should be clustered.
  numData | number of data points.

## ◆ vl_gmm_new()

VlGMM * vl_gmm_new | ( | vl_type | dataType,
|  | vl_size | dimension,
|  | vl_size | numComponents )

Parameters

  dataType | type of data (VL_TYPE_FLOAT or VL_TYPE_DOUBLE)
  dimension | dimension of the data.
  numComponents | number of Gaussian mixture components.

Returns
  new GMM object instance.

## ◆ vl_gmm_new_copy()

VlGMM * vl_gmm_new_copy | ( | VlGMM const * | self | ) |

Parameters

  self | object.

Returns
  new copy.

Most parameters, including the cluster priors, means, and covariances are copied. Data posteriors (available after initalization or EM) are not; nor is the KMeans object used for initialization, if any.

## ◆ vl_gmm_reset()

void vl_gmm_reset | ( | VlGMM * | self | ) |

Parameters

  self | object.

The function reset the state of the GMM object. It deletes any stored posterior and other internal state variables.

## ◆ vl_gmm_set_covariance_lower_bound()

void vl_gmm_set_covariance_lower_bound | ( | VlGMM * | self,
|  | double | bound )

Parameters

  self | object.
  bound | bound.

While there is one lower bound per dimension, this function sets all of them to the specified scalar. Use vl_gmm_set_covariance_lower_bounds to set them individually.

## ◆ vl_gmm_set_covariance_lower_bounds()

void vl_gmm_set_covariance_lower_bounds | ( | VlGMM * | self,
|  | double const * | bounds )

Parameters

  self | object.
  bounds | bounds.

There is one lower bound per dimension. Use vl_gmm_set_covariance_lower_bound to set all of them to a given scalar.

## ◆ vl_gmm_set_covariances()

void vl_gmm_set_covariances | ( | VlGMM * | self,
|  | void const * | covariances )

Parameters

  self | GMM object instance.
  covariances | initial values of covariance matrix diagonals.

## ◆ vl_gmm_set_initialization()

void vl_gmm_set_initialization | ( | VlGMM * | self,
|  | VlGMMInitialization | init )

Parameters

  self | object
  init | initialization algorithm.

## ◆ vl_gmm_set_kmeans_init_object()

void vl_gmm_set_kmeans_init_object | ( | VlGMM * | self,
|  | VlKMeans * | kmeans )

Parameters

  self | object
  kmeans | initialization KMeans object.

## ◆ vl_gmm_set_max_num_iterations()

void vl_gmm_set_max_num_iterations | ( | VlGMM * | self,
|  | vl_size | maxNumIterations )

Parameters

  self | VlGMM filter.
  maxNumIterations | maximum number of iterations.

## ◆ vl_gmm_set_means()

void vl_gmm_set_means | ( | VlGMM * | self,
|  | void const * | means )

Parameters

  self | GMM object instance.
  means | initial values of means.

## ◆ vl_gmm_set_num_repetitions()

void vl_gmm_set_num_repetitions | ( | VlGMM * | self,
|  | vl_size | numRepetitions )

Parameters

  self | object
  numRepetitions | maximum number of repetitions. The number of repetitions cannot be smaller than 1.

## ◆ vl_gmm_set_priors()

void vl_gmm_set_priors | ( | VlGMM * | self,
|  | void const * | priors )

Parameters

  self | GMM object instance.
  priors | initial values of the gaussian priors.

## ◆ vl_gmm_set_verbosity()

void vl_gmm_set_verbosity | ( | VlGMM * | self,
|  | int | verbosity )

Parameters

  self | object
  verbosity | verbosity level.