mlp

Purpose

Create a 2-layer feedforward network.

Synopsis

net = mlp(nin, nhidden, nout, func)
net = mlp(nin, nhidden, nout, func, prior)
net = mlp(nin, nhidden, nout, func, prior, beta)

Description

net = mlp(nin, nhidden, nout, func) takes the number of inputs, hidden units and output units for a 2-layer feed-forward network, together with a string func which specifies the output unit activation function, and returns a data structure net. The weights are drawn from a zero mean, unit variance isotropic Gaussian, with varianced scaled by the fan-in of the hidden or output units as appropriate. This makes use of the Matlab function randn and so the seed for the random weight initialization can be set using randn('state', s) where s is the seed value. The hidden units use the tanh activation function.

The fields in net are


  type = 'mlp'
  nin = number of inputs
  nhidden = number of hidden units
  nout = number of outputs
  nwts = total number of weights and biases
  actfn = string describing the output unit activation function:
      'linear'
      'logistic
      'softmax'
  w1 = first-layer weight matrix
  b1 = first-layer bias vector
  w2 = second-layer weight matrix
  b2 = second-layer bias vector
Here w1 has dimensions nin times nhidden, b1 has dimensions 1 times nhidden, w2 has dimensions nhidden times nout, and b2 has dimensions 1 times nout.

net = mlp(nin, nhidden, nout, func, prior), in which prior is a scalar, allows the field net.alpha in the data structure net to be set, corresponding to a zero-mean isotropic Gaussian prior with inverse variance with value prior. Alternatively, prior can consist of a data structure with fields alpha and index, allowing individual Gaussian priors to be set over groups of weights in the network. Here alpha is a column vector in which each element corresponds to a separate group of weights, which need not be mutually exclusive. The membership of the groups is defined by the matrix indx in which the columns correspond to the elements of alpha. Each column has one element for each weight in the matrix, in the order defined by the function mlppak, and each element is 1 or 0 according to whether the weight is a member of the corresponding group or not. A utility function mlpprior is provided to help in setting up the prior data structure.

net = mlp(nin, nhidden, nout, func, prior, beta) also sets the additional field net.beta in the data structure net, where beta corresponds to the inverse noise variance.

See Also

mlpprior, mlppak, mlpunpak, mlpfwd, mlperr, mlpbkp, mlpgrad
Pages: Index

Copyright (c) Ian T Nabney (1996-9)