10.8 Building Networks Using the Viewer

The network viewer (see section 10.6 Network Viewer) can be used to build networks easily and rapidly. The Minor Action Buttons in the action region (see section 10.7.1 The Action Region) in particular provide a series of actions that can be performed on objects selected in the view region (see section 10.7.3 The View Region) that allow one to build the network. Also note that the tutorial covers some of the following material (see section 4.3.2 Making a New Network).

The first step in building the network is creating the layers. The New Layer(s) button is highlighted when there are no layers in the network, and it is usable when nothing else is selected. It will prompt for the number of layers to create. After they are created, they show up in the view region. Note that they might appear off-screen depending on how many were created, so you might have to hit the Init button to see them all.

The ReShape button is used to shape layers into their desired size. Note that the size of the layer is displayed in the coordinate area at the very top of the "actions" region (see section 10.7.1 The Action Region). The default assumption of the software is to create as many units as will fit in the shape of the layer (i.e., n_units = X * Y). Whenever you use ReShape and there are no units in the layer currently, it will reset the n_units to fill the layer box completely. However, if you use ReShape and there are units in the layer, the value of n_units is not changed. Note, however, that it will be impossible to shape the layer to a size that is smaller than that which will contain all of the existing units. For more info on layer parameters, see section 10.2 Layers and Unit Groups.

There are two ways of specifying a number of units that is less than the size of the layer. One is to select the layer box, at which time, if it is empty, the New Unit(s) action button will become highlighted. This action will prompt you for the number of units to create (the default being the number that will fill the box completely). By entering a number that is less than this default value, you will simultaneously create the units in the layer, and set the n_units value to be that number. Thus, any subsequent Build actions on this layer will create that many units if they are not already there.

The units within the layer can be moved around. However, they must stay within the layer box. Thus, you must reshape the layer to a larger size if you wish to move the units beyond the box.

If the units within a layer are grouped into sub-groups, these constitute a distinct selection level, so that all the units in the group can be selected together.

Note that the Build All button is highlighted whenever there is a layer that does not have its full complement of n_units units in it. Pressing Build All will create units in all the layers which need them, and ensure that the units in the existing layers are of the type specified in the units group on the layer.

After creating layers and units within them, the next step is to specify the connectivity between layers. Alternatively, though less commonly (and more effortfully), connectivity can be specified on a unit-by-unit basis. This is covered later in this section. As was discussed above (see section 10.3 Projections), it is easier to specify connectivity in terms of projections between layers.

To create a new projection you select the receiving layer first. Then, "extend" select the sending layer(s) (use the middle mouse button or hold down the shift key while selecting, which adds the selected item to the list of those things selected, instead of making it the only thing selected). The New Prjn(s) button will be highlighted, and pressing it will create a projection into the first-selected receiving layer from the subsequently selected sending layer(s).

Note that you can also create bi-directional projections instead. Just use the New BiPrjns button instead of New Prjn(s), and this will create a reciprocal projection into the sending layer from the receiving layer.

To self-connect a layer, simply select one layer, and press the New Self Prjn button.

Just as with units in layers, one can create connections in projections either all at once with the Connect All button, or individually by selecting the projection and using the Fill Prjn(s) button, which will be highlighted if the projection does not yet have any connections associated with it.

To connect units on an individual basis, one simply selects the receiving unit first and then the sending unit(s), and selects the Connect Units button (or the BiCon Units to bidirectionally-connect them). The connections made in this way will be associated with a CustomPrjnSpec, which basically just ensures that the connectivity pattern will not be reset when the Connect All button is pressed (i.e., it has no Connect function because the connections are made one-by-one).

The specifications associated with the objects in the network can be viewed and changed by using the Selections menu of the network viewer. This allows one to associate different parameters or types of processing with different components of the network (e.g., projections with different patterns of connectivity, units with different activation functions or parameters, connections with different learning rates, etc..)

Note that each layer has a default UnitSpec associated with it, which is applied to any new units created in the layer or when Build is performed. Thus, if all of the units in the layer will be using the same unit spec, it is a good idea to just select the layer itself and then use Selections/Set Unit Spec to set the spec. This will automatically apply this spec to all of the units in the layer.

Also note that connection specifications (ConSpecs) are associated with projections. Thus, projections will be selected when Selections/Show Con Spec is performed, and you should select projections when doing the Selections/Set Con Spec.

Finally, all objects can be Removed and Edited by selecting them and pressing the appropriate action button. When editing a group of objects (i.e., after having multiply selected them and pressed Edit), these objects should remain the only ones selected until the dialog is either Oked or Canceled, since changing what is selected affects what the edit dialog thinks its editing, and you won't be able to Apply your editing changes if the selections change.