All Packages  Class Hierarchy  This Package  Previous  Next  Index

Class sim.funApp.Net

java.lang.Object
   |
   +----sim.funApp.FunApp
           |
           +----sim.funApp.Net

public class Net
extends FunApp
Net is a general Neural Network architecture which computes the first and second derivitives wrt the weights and inputs. The structure is specified using keywords which describe the weighting scheme from one layer to the next and the activation function used within a layer. The number of nodes is also specified in parenthesis following the activation function keyword. To use Net you should use the following format, with as many layers as desired, when a FunApp is required: Net {a w(#) a(#) w(#) a(#) w(#) a(#) w(#) a} 'a' is chosen from the following set of activation functions, {Identity, HardlimitingSquashing, Bipolar, Monopolar, ExponentialInverted, HyperbolicTan, Sin, Gaussian}. 'w' is chosen from the following set of weighting schemes, {Linear, Quadratic1, Quadratic2}. The '#' after the activation function stands for number of nodes in that layer. The '#' after the weighting scheme stands for the amount of bias for that layer Note that activation functions must be in the first and last positions and these two activation functions should not specifiy a number of nodes because that information is given in the Data object. Original MLP was written by Mance E. Harmon and was enhanced by Scott Weaver

This code is (c) 1997 Scott E. Weaver <scott.weaver@uc.edu>, http://http://www.ececs.uc.edu/~sweaver
The source and object code may be redistributed freely provided no fee is charged. If the code is modified, please state so in the comments.

Version:
1.05, 19 Sep 97 possibly fixed parse bug, verified second derivitives. -Scott Weaver If you'd like you can check this code for your particular application see comment block at the end of this file. The variables have a specific convention. dSikdwik means derivative of the single node Sik with respect to the vector wik. The derivitive of this variable with respect to Simo would be dSikdwikdSimo. imo means the i minus one'th layer. ik means the ith layer and the kth node in layer i. A variable that ends in T stands for Transpose. 'u' refers to weights in all layers following (but not including) the current layer. 'w' refers to weights in the current layer. Variables of the form d?* stands for derrivitive of ? wrt *, where ? and * are usually variables defined elsewhere Comments with a number such as (4) or 5 or |2| refer to my personal notes - Scott Weaver
Author:
Scott Weaver, Leemon Baird

Constructor Index

 o Net()

Method Index

 o BNF(int)
Return the BNF description of how to parse the parameters of this object.
 o clone()
Make an exact duplicate of this class.
 o cloneVars(FunApp)
After making a copy of self during a clone(), call cloneVars() to copy variables into the copy, then return super.cloneVars(copy).
 o evaluate()
calculate the output for the given input.
 o findGradients()
Calculate the output and gradient for a given input.
 o findHessian()
Calculate the output, gradient, and Hessian for a given input.
 o nWeights(int, int)
Return # weights needed for nIn inputs (including the first one which is always 1.0), and nOut outputs.
 o parse(Parser, int)
Parse the input file to get the parameters for this object.
 o setIO(Matrix, Matrix, Matrix, Matrix, Matrix, Matrix, Matrix, Matrix, Matrix)
Define the Matrix objects that will be used by evaluate() and findGradients().
 o unparse(Unparser, int)
Output a description of this object that can be parsed with parse().

Constructors

 o Net
 public Net()

Methods

 o setIO
 public void setIO(Matrix inVect,
                   Matrix outVect,
                   Matrix weights,
                   Matrix dEdIn,
                   Matrix dEdOut,
                   Matrix dEdWeights,
                   Matrix dEdIndIn,
                   Matrix dEdOutdOut,
                   Matrix dEdWeightsdWeights) throws MatrixException
Define the Matrix objects that will be used by evaluate() and findGradients(). All 9 should be column vectors (n by 1 matrices). All the Matrix objects are copied, but the pointers still point to the same data arrays.

Throws: MatrixException
if vector shapes don't match
Overrides:
setIO in class FunApp
 o evaluate
 public void evaluate()
calculate the output for the given input. Also calculates Ap and App because it is appropriate to do so eventhough they are not used until backward pass

Overrides:
evaluate in class FunApp
 o findGradients
 public void findGradients()
Calculate the output and gradient for a given input. This does everything evaluate() does, plus it calculates the gradient of the error with resepect to the the weights and inputs, dEdx, and dEdw. User must set dEdOut before calling.

Overrides:
findGradients in class FunApp
 o findHessian
 public void findHessian()
Calculate the output, gradient, and Hessian for a given input. This does everything evaluate() and findGradients() do, plus it calculates the Hessian of the error with resepect to the the weights and inputs, dEdxdx, dEdwdx, and dEdwdw. User must set dEdOut and dEdOutdOut before calling.

Overrides:
findHessian in class FunApp
 o nWeights
 public int nWeights(int nIn,
                     int nOut)
Return # weights needed for nIn inputs (including the first one which is always 1.0), and nOut outputs.

Overrides:
nWeights in class FunApp
 o BNF
 public String BNF(int lang)
Return the BNF description of how to parse the parameters of this object.

Overrides:
BNF in class FunApp
 o unparse
 public void unparse(Unparser u,
                     int lang)
Output a description of this object that can be parsed with parse().

Overrides:
unparse in class FunApp
See Also:
Parsable
 o parse
 public Object parse(Parser p,
                     int lang) throws ParserException
Parse the input file to get the parameters for this object.

Throws: ParserException
parser didn't find the required token
Overrides:
parse in class FunApp
 o clone
 public Object clone()
Make an exact duplicate of this class. For objects it contains, it only duplicates the pointers, not the objects they point to. For a new FunApp called MyFunApp, the code in this method should be the single line: return cloneVars(new MyFunApp());

Overrides:
clone in class FunApp
 o cloneVars
 public Object cloneVars(FunApp copy)
After making a copy of self during a clone(), call cloneVars() to copy variables into the copy, then return super.cloneVars(copy). The variables copied are just those set in parse() and setWatchManager(). The caller will be required to call setIO to set up the rest of the variables.

Overrides:
cloneVars in class FunApp

All Packages  Class Hierarchy  This Package  Previous  Next  Index