Public Types |
typedef hash_map< AmIdInt,
Neuron * >::const_iterator | const_iterator |
typedef hash_map< unsigned
int, Layer * >::iterator | layer_iterator |
Public Methods |
| Network () |
virtual | ~Network () |
void | ScheduleNEvent (NEvent eventType, AmTimeInt eventTime, Neuron *reqNrn) |
void | ScheduleNEvent (NEvent eventType, AmTimeInt eventTime, AmIdInt reqNrnId) |
Neuron * | AddNeuron (NeuronRole nRole, AmIdInt nId) |
Neuron * | AddNeuron (NeuronRole nRole, Neuron *nrn) |
bool | ConnectNeurons (AmIdInt preSynapticNeuron, AmIdInt postSynapticNeuron, float weight, AmTimeInt delay=0) |
bool | ConnectNeurons (Neuron *preSynapticNeuron, Neuron *postSynapticNeuron, float weight, AmTimeInt delay=0) |
void | Run (AmTimeInt maxRunTime) |
int | Size () |
int | LayerCount () |
const_iterator | begin () const |
const_iterator | end () const |
layer_iterator | layer_begin () |
layer_iterator | layer_end () |
void | AddLayer (Layer *newLayer) |
AmIdInt | MaxNeuronId () |
bool | Layered () |
Neuron * | GetNeuron (AmIdInt nId) |
SpikeInput * | GetSpikeInput () |
void | SetSpikeInput (SpikeInput *sIn) |
bool | StreamingInput () |
void | StreamingInput (bool streaming) |
void | SetTrainingMode (bool tMode) |
bool | GetTrainingMode () const |
Layer * | GetLayer (AmIdInt layerId) |
void | EnableSpikeBatching () |
Static Public Methods |
void | SetTimeStepSize (AmTimeInt stepSize) |
AmTimeInt | TimeStepSize () |
AmTimeInt | SimTime () |
void | ResetSimTime () |
Protected Methods |
void | ScheduleSpikeDelay (vector< Synapse * > &axon) |
virtual void | IncrementSimTime () |
void | IncrementDelayOffset () |
Protected Attributes |
int | pspLSize |
int | pspLRes |
int | netSize |
bool | streamingInput |
AmIdInt | nextNeuronId |
unsigned int | nextLayerId |
FunctionLookup * | functionRef |
SpikeInput * | spikeInput |
hash_map< AmIdInt, Neuron * > | net |
hash_map< unsigned int, Layer * > | layers |
priority_queue< SpikeRequest > | eventQ |
priority_queue< SpikeRequest > | inputQ |
vector< vector< Synapse * > > | delayedSpikeQ |
AmTimeInt | currSpikeDelayOffset |
AmTimeInt | maxOffset |
bool | spikeDelaysOn |
AmTimeInt | maxSpikeDelay |
Synapse * | maxSpikeDelaySyn |
unsigned int | spikeBatchCount |
Static Protected Attributes |
AmTimeInt | simStepSize |
AmTimeInt | simTime |
unsigned int | runCount |
Friends |
class | Neuron |
void | MpSpikeInput::ReadInputBuffer () |
Network acts as a container for Neurons and Layers and also coordinates spike transmission between neurons. Amygdala supports multi-threading through the use of the MpNetwork class which allows neural nets to be partitioned across multiple Network objects. MpNetwork handles all communication between Networks and Neurons running in separate threads. This model will be extended in the future to allow Amygdala networks to run on clustered computer systems.
If there is a need to run two or more entirely separate neural nets at the same time, it is recommended that they be put into separate processes using fork() (or any other method that is useful). It would be possible to run separate networks by using MpNetwork, but the results may not be what is expected since MpNetwork is designed with the assumption that all MpNetwork objects belong to the same physical neural net.