The GTM Toolbox

version 1.02 This implementation of the GTM runs under MATLAB (v4.2) and includes all the necessary machinery to create and experiment with GTMs, including data visualisation; it also includes a demo. It comes as a set of MATLAB functions and scripts, together with two short routines in C, which maybe compiled into mex-files which can be called directly from MATLAB, provided you have a C-compiler supported by MATLAB. However, the toolbox can also be used as a pure MATLAB implementation.

In terms of documentation, there is a User's Guide in postscript format, which contains a reference section for all the functions and scripts in the toolbox. The reference information is also available as MATLAB help comments and as a set of html-files, which can be viewed with an html-browser like Mosaic or Netscape. Note the the documentation does not cover any of the underlying theory of the GTM, for which you are referred to the papers on the GTM.

The toolbox is available as:

Unpacking these archives yields the following directory hierarchy:

GTM
 |---MATLAB
 |
 |---DOC
      |---HTML

Make sure you unpack the archive in the directory where you want this hierarchy to be placed. To use it, just put the GTM/MATLAB directory in your MATLAB path (see MATLAB documentation). For html-documentation, Contents.htm is the root document.

How to extract the archives

The compressed tape-archive was created using UNIX programs tar and compress, and can be extracted using the UNIX programs uncompress and tar.

The zip-archive was created using the zip utility under UNIX and can be extracted under UNIX using unzip utility, if you have it. Under MS-DOS, it can be extracted using, e.g., pkunzip (version 2.04 or later, use the -d switch). For licensing reasons, we cannot distribute pkunzip to you. However, it can be obtained for free over Internet (non-commercial usage is free to individuals) from PKWARE Inc..

Earlier versions

Below are the changes which where made for each of the earlier versions; under heading `Version 1.00' you find what was changed in going from version 1.00 to version 1.01.

Version 1.01

There was a `bug', which unfortunately remained undetected for quite some time, in the MATLAB implementation (gtm_trn.m) and the first papers. The regularized update equation for the weights, W, said:

(PHI^T*G_old*PHI + lambda*I)W^T_new = PHI^T*R_old*T

This should be

(PHI^T*G_old*PHI + (lambda/beta)*I)W^T_new = PHI^T*R_old*T

In practice, this meant that the variance of the Gaussian prior distribution over the weights was changing during the training, decreasing as the estimated noise variance was decreasing (i.e. as ß (beta) was increasing).

To upgrade to version 1.02, either change line 154 of gtm_trn.m from:

A = full(FI_T*spdiags(sum(gtmGlobalR')', 0, K, K)*FI + LAMBDA);
to
A = full(FI_T*spdiags(sum(gtmGlobalR')', 0, K, K)*FI + (LAMBDA./beta));
or get an updated version directly from here:

Version 1.00

gtm_ppd had its output arguments messed up, which result in the returned responsibility vector being empty when using a 1-dimensional latent space. There is unfortunately no better workaround than changing the code; on line 51 of gtm_ppd.m change:
  p = R;
to
  yl = R;
or get an updated version directly from here: The User's Guide has also been slightly altered with some updated references and corrected typos; the new version is available separately as gzipped postscript (zipped version).
Return to the GTM Homepage
This page is maintained by Markus Svensén (svensen@cns.mpg.de)

Copyright © Markus Svensén 1996, 1997, 1998