Documentation
¶
Overview ¶
Package fsfffb provides Fast and Slow feedforward (FF) and feedback (FB) inhibition (FFFB) based on incoming spikes (FF) and outgoing spikes (FB).
This produces a robust, graded k-Winners-Take-All dynamic of sparse distributed representations having approximately k out of N neurons active at any time, where k is typically 10-20 percent of N.
Index ¶
- type GiParams
- func (fb *GiParams) Defaults()
- func (fb *GiParams) FS(fsi, gext float32, clamped bool) float32
- func (fb *GiParams) FS0Thr(val float32) float32
- func (fb *GiParams) FSiFromFFs(fsi, ffs, fbs float32) float32
- func (fb *GiParams) SSFromFBs(ssf, ssi *float32, fbs float32)
- func (fb *GiParams) ShouldDisplay(field string) bool
- func (fb *GiParams) Update()
- type InhibVars
- func (i InhibVars) Desc() string
- func (i InhibVars) Int64() int64
- func (i InhibVars) MarshalText() ([]byte, error)
- func (i *InhibVars) SetInt64(in int64)
- func (i *InhibVars) SetString(s string) error
- func (i InhibVars) String() string
- func (i *InhibVars) UnmarshalText(text []byte) error
- func (i InhibVars) Values() []enums.Enum
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type GiParams ¶
type GiParams struct { // On enables this level of inhibition. On slbool.Bool // Gi is overall inhibition gain, which is the main parameter to adjust // to change overall activation levels, scaling both the FS and SS factors. Gi float32 `min:"0" default:"1,1.1,0.75,0.9"` // FB is the amount of FB spikes included in FF for driving FS. // For small networks, 0.5 or 1 works best; larger networks and // more demanding inhibition requires higher levels. FB float32 `min:"0" default:"0.5,1,4"` // FSTau is fast spiking (PV+) intgration time constant in cycles (msec). // Tau is roughly how long it takes for value to change significantly = 1.4x the half-life. FSTau float32 `min:"0" default:"6"` // SS is the multiplier on SS slow-spiking (SST+) in contributing to the // overall Gi inhibition. FS contributes at a factor of 1. SS float32 `min:"0" default:"30"` // SSfTau is the slow-spiking (SST+) facilitation decay time constant // in cycles (msec). Facilication factor SSf determines impact of FB spikes // as a function of spike input. // Tau is roughly how long it takes for value to change significantly = 1.4x the half-life. SSfTau float32 `min:"0" default:"20"` // SSiTau is the slow-spiking (SST+) intgration time constant in cycles (msec) // cascaded on top of FSTau. // Tau is roughly how long it takes for value to change significantly = 1.4x the half-life. SSiTau float32 `min:"0" default:"50"` // FS0 is the fast spiking zero point: below this level, no FS inhibition // is computed, and this value is subtracted from the FSi. FS0 float32 `default:"0.1"` // FFAvgTau is the time constant for updating a running average of the // feedforward inhibition over a longer time scale, for computing FFPrv. FFAvgTau float32 `default:"50"` // FFPrv is the proportion of previous average feed-forward inhibition (FFAvgPrv) // to add, resulting in an accentuated temporal-derivative dynamic where neurons // respond most strongly to increases in excitation that exceeds inhibition from last time. FFPrv float32 `default:"0"` // ClampExtMin is the minimum GeExt value required to drive external clamping dynamics // (if clamp is set), where only GeExt drives inhibition. If GeExt is below this value, // then the usual FS-FFFB drivers are used. ClampExtMin float32 `default:"0.05"` // rate = 1 / tau FSDt float32 `edit:"-" display:"-" json:"-" xml:"-"` // rate = 1 / tau SSfDt float32 `edit:"-" display:"-" json:"-" xml:"-"` // rate = 1 / tau SSiDt float32 `edit:"-" display:"-" json:"-" xml:"-"` // rate = 1 / tau FFAvgDt float32 `edit:"-" display:"-" json:"-" xml:"-"` // contains filtered or unexported fields }
GiParams parameterizes feedforward (FF) and feedback (FB) inhibition (FFFB) based on incoming spikes (FF) and outgoing spikes (FB) across Fast (PV+) and Slow (SST+) timescales. FF -> PV -> FS fast spikes, FB -> SST -> SS slow spikes (slow to get going)
func (*GiParams) FS ¶
FS returns the current effective FS value based on fsi and fsd if clamped, then only use gext, without applying FS0
func (*GiParams) FSiFromFFs ¶
FSiFromFFs updates fast-spiking inhibition FSi from FFs spikes
func (*GiParams) ShouldDisplay ¶
type InhibVars ¶
type InhibVars int32 //enums:enum
InhibVars are inhibitory variables for computing fsfffb inhibition.
const ( // FFsRaw is the raw aggregation of all feedforward incoming spikes into neurons // in this pool. It is integrated using FFsRawInt in InhibIntVars. FFsRaw InhibVars = iota // FBsRaw is the raw aggregation of all feedback outgoing spikes generated // from neurons in this pool. It is integrated using FBsRawInt in InhibIntVars. FBsRaw // GeExtRaw is the raw aggregation of all extra GeExt conductances added to neurons. // It is integrated using GeExtRawInt in InhibIntVars. GeExtRaw // FFs is all feedforward incoming spikes into neurons in this pool, // normalized by pool size. FFs // FBs is all feedback outgoing spikes generated from neurons in this pool, // normalized by pool size. FBs // GeExts is all extra GeExt conductances added to neurons, // normalized by pool size. GeExts // FSi is the fast spiking PV+ fast integration of FFs feedforward spikes. FSi // SSi is the slow spiking SST+ integration of FBs feedback spikes. SSi // SSf is the slow spiking facilitation factor, representing facilitating // effects of recent activity. SSf // FSGi is the overall fast-spiking inhibitory conductance. FSGi // SSGi is the overall slow-spiking inhibitory conductance. SSGi // TotalGi is the overall inhibitory conductance = FSGi + SSGi. TotalGi // GiOrig is the original value of the inhibition (before pool or other effects). GiOrig // LayGi is the layer-level inhibition that is MAX'd with the pool-level // inhibition to produce the net inhibition, only for sub-pools. LayGi // FFAvg is the longer time scale running average FF drive, used for FFAvgPrv. FFAvg // FFAvgPrv is the previous theta cycle FFAvg value, for the FFPrv factor. // Updated in the Decay function that is called at start of new State / Trial. FFAvgPrv )
const InhibVarsN InhibVars = 16
InhibVarsN is the highest valid value for type InhibVars, plus one.
func InhibVarsValues ¶
func InhibVarsValues() []InhibVars
InhibVarsValues returns all possible values for the type InhibVars.
func (InhibVars) MarshalText ¶
MarshalText implements the encoding.TextMarshaler interface.
func (*InhibVars) SetString ¶
SetString sets the InhibVars value from its string representation, and returns an error if the string is invalid.
func (*InhibVars) UnmarshalText ¶
UnmarshalText implements the encoding.TextUnmarshaler interface.