Neural Network Trainer TNet

Overview:

A fast tool for parallel training of neural networks for classification. There are two sets of tools, the CPU and GPU tools. The fast CPU training is based on multithread data-parallelization approach. The GPU training is is implemented by means of CUDA GPGPU, it can be viewed as o form of node-parallelization approach. The training algorithm is block-wise Stochastic Gradient Descent.

With the toolkit you may experiment with various NN tricks such as convolutive networks with shared weights, RBM pre-training by Contrastive Divergence and sequence-based MPE training.

Distributions:

The package contains sourcecodes, libraries and training example:
http://speech.fit.vutbr.cz/files/software/tnet/TNet_v1_8_r115.tar.gz

Various libraries are used in TNet:

  • KaldiLib this is the subset of classes from kaldi 1.0 project, it contains matrix/vector classes, features/labels I/O and UI
  • GotoBLAS is used for acceleration of linear algebra on CPU
  • CUDA is used to facilitate GPGPU computing
  • pthreads are used for multithreading and synchronisation
  • STKLib is used for lattice rescoring in MPE trainig (most of the tools are STK-independent)

The neural networks are viewed as a sequence of linear/nonlinear transforms (BiasedLinearity, Biases, Sigmoid or Softmax), which are able to propagate, backpropagate and update. You may implement your own transforms, (see interfaces Component and UpdatableComponent). Cross-entropy training criterion is used, however also Mean Square Error criterion is implemented.
The feature/label files are HTK compatible.

Licence:

The tool is distributed under Apache v2.0 licence:
http://www.apache.org/licenses/LICENSE-2.0.txt