Specs

From Emergent

Jump to: navigation, search

Introduction

Specs are specification objects for different types of Network objects, including LayerSpec, ProjectionSpec, UnitSpec, and ConSpec.

The software reflects the separation of state variables (e.g., the current activation of a unit) from specification variables (e.g., the activation function to be used in computing activation states, and its associated parameters). This distinction is made because it is often desirable to have many objects use the same specifications, while each retain a distinct set of state variables. For example, all of the units in one layer might use a particular learning rate, while units in another layer have a different one. By separating these specifications from the state variables, it is easy to accomplish this.

Thus, associated with many different kinds of objects is a corresponding Spec object (e.g., a UnitSpec for Unit objects, etc). While this separation does sometimes make it a little more difficult to find the parameters which are controlling a given object's behavior, it makes the software much more flexible. Furthermore, we have put most of the specification objects (specs) in one place, so it should soon become second nature to look in this place to set or change parameters. Note: in Emergent, specs live inside the Network, in contrast to PDP++.

Spec Inheritance

To simplify the ability of specs to share some parameters and not others, a special system of spec inheritance was developed. Basically, each spec has a group on it called children, in which "child" specs can be created. These child specs inherit all of their parameters from the parent spec, except those specifically marked as unique to the child. These fields appear with a check in the left-hand check-box when edited in the GUI. Thus, whenever you change a value in the parent, the children automatically get this changed value, except if they have a unique value for this field, in which case they keep their current value.

Reference Information

Personal tools