Documentation ¶
Overview ¶
Package emergent is the overall repository for the emergent neural network simulation software, written in Go (golang) with Python wrappers.
This top-level of the repository has no functional code -- everything is organized into the following sub-repositories:
* emer: defines the primary structural interfaces for emergent, at the level of Network, Layer, and Prjn (projection). These contain no algorithm-specific code and are only about the overall structure of a network, sufficient to support general purpose tools such as the 3D NetView. It also houses widely-used support classes used in algorithm-specific code, including things like MinMax and AvgMax, and also the parameter-styling infrastructure (emer.Params, emer.ParamStyle, emer.ParamSet and emer.ParamSets).
* erand has misc random-number generation support functionality, including erand.RndParams for parameterizing the type of random noise to add to a model, and easier support for making permuted random lists, etc.
* netview provides the NetView interactive 3D network viewer, implemented in the GoGi 3D framework.
* prjn is a separate package for defining patterns of connectivity between layers (i.e., the ProjectionSpecs from C++ emergent). This is done using a fully independent structure that *only* knows about the shapes of the two layers, and it returns a fully general bitmap representation of the pattern of connectivity between them. The leabra.Prjn code then uses these patterns to do all the nitty-gritty of connecting up neurons. This makes the projection code *much* simpler compared to the ProjectionSpec in C++ emergent, which was involved in both creating the pattern and also all the complexity of setting up the actual connections themselves. This should be the *last* time any of those projection patterns need to be written (having re-written this code too many times in the C++ version as the details of memory allocations changed).
* patgen supports various pattern-generation algorithms, as implemented in taDataGen in C++ emergent (e.g., PermutedBinary and FlipBits).
* timer is a simple interval timing struct, used for benchmarking / profiling etc.
* python contains a template Makefile that uses [GoPy](https://github.com/goki/gopy) to generate python bindings to the entire emergent system. See the leabra package version to actually run an example.
Directories ¶
Path | Synopsis |
---|---|
Package actrf provides activation-based receptive field computation, otherwise known as reverse correlation.
|
Package actrf provides activation-based receptive field computation, otherwise known as reverse correlation. |
Package efuns has misc functions, such as Gaussian and Logistic, that are used in neural models, and do not have a home elsewhere.
|
Package efuns has misc functions, such as Gaussian and Logistic, that are used in neural models, and do not have a home elsewhere. |
Package emer provides minimal interfaces for the basic structural elements of neural networks including: * emer.Network, emer.Layer, emer.Unit, emer.Prjn (projection that interconnects layers)
|
Package emer provides minimal interfaces for the basic structural elements of neural networks including: * emer.Network, emer.Layer, emer.Unit, emer.Prjn (projection that interconnects layers) |
Package env defines an interface for environments, which determine the nature and sequence of States that can be used as inputs to a model and it can also accept Action responses from the model that affect how the enviroment evolves in the future.
|
Package env defines an interface for environments, which determine the nature and sequence of States that can be used as inputs to a model and it can also accept Action responses from the model that affect how the enviroment evolves in the future. |
Package erand provides randomization functionality built on top of standard math/rand random number generation functions.
|
Package erand provides randomization functionality built on top of standard math/rand random number generation functions. |
Package esg is the emergent stochastic generator, where tokens are generated stochastically according to rules defining the contingencies and probabilities.
|
Package esg is the emergent stochastic generator, where tokens are generated stochastically according to rules defining the contingencies and probabilities. |
Package evec has vector types for emergent, including Vec2i which is a 2D vector with int values, using the API based on mat32.Vec2i.
|
Package evec has vector types for emergent, including Vec2i which is a 2D vector with int values, using the API based on mat32.Vec2i. |
Package netview provides the NetView interactive 3D network viewer, implemented in the GoGi 3D framework.
|
Package netview provides the NetView interactive 3D network viewer, implemented in the GoGi 3D framework. |
Package params provides general-purpose parameter management functionality for organizing multiple sets of parameters efficiently, and basic IO for saving / loading from JSON files and generating Go code to embed into applications, and a basic GUI for viewing and editing.
|
Package params provides general-purpose parameter management functionality for organizing multiple sets of parameters efficiently, and basic IO for saving / loading from JSON files and generating Go code to embed into applications, and a basic GUI for viewing and editing. |
Package patgen contains functions that generate patterns, typically based on various constrained-forms of random patterns
|
Package patgen contains functions that generate patterns, typically based on various constrained-forms of random patterns |
Package `popcode` provides population code encoding and decoding support functionality, in 1D and 2D.
|
Package `popcode` provides population code encoding and decoding support functionality, in 1D and 2D. |
Package prjn is a separate package for defining patterns of connectivity between layers (i.e., the ProjectionSpecs from C++ emergent).
|
Package prjn is a separate package for defining patterns of connectivity between layers (i.e., the ProjectionSpecs from C++ emergent). |
Package relpos defines a position relationship among layers, in terms of X,Y width and height of layer and associated position within a given X-Y plane, and Z vertical stacking of layers above and below each other.
|
Package relpos defines a position relationship among layers, in terms of X,Y width and height of layer and associated position within a given X-Y plane, and Z vertical stacking of layers above and below each other. |
Package ringidx provides circular indexing logic for writing a given length of data into a fixed-sized buffer and wrapping around this buffer, overwriting the oldest data.
|
Package ringidx provides circular indexing logic for writing a given length of data into a fixed-sized buffer and wrapping around this buffer, overwriting the oldest data. |
Package `stepper` allows you to set StepPoints in simulation code that will pause if some condition is satisfied.
|
Package `stepper` allows you to set StepPoints in simulation code that will pause if some condition is satisfied. |
Package timer provides a simple wall-clock duration timer based on standard time.
|
Package timer provides a simple wall-clock duration timer based on standard time. |
Package weights provides weight loading routines that parse weight files into a temporary structure that can then be used to set weight values in the network.
|
Package weights provides weight loading routines that parse weight files into a temporary structure that can then be used to set weight values in the network. |